rt,蒟蒻交了下了下代码,然后就A了两个点,#1都WA了,数据下下来是样例,但是样例在蒟蒻本地是对的7,但是数据点信息是:read 8, expected 7.,请问dalao怎么回事,谢谢大佬。
代码附上:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,s,t,cnt;
struct EDGE{
int to,w,next;
}edge[10000];
int head[10000],dis[10000];
bool vis[10000];
void add(int u,int v,int w){
cnt++;
edge[cnt].to=v;
edge[cnt].w=w;
edge[cnt].next=head[u];
head[u]=cnt;
}
struct node{
int dis,poi;
bool operator < (const node &x)const{
x.dis<dis;
}
};
priority_queue<node> Q;
signed main(){
cin>>n>>m>>s>>t;
for(int i=0 ; i<=n ; i++)
dis[i]=0x7fffffff,head[i]=-1;
for(int i=1 ; i<=m ; i++){
int u,v,w;
cin>>u>>v>>w;
add(u,v,w);
add(v,u,w);
}
dis[s]=0;
node dij;
dij.dis=0,dij.poi=s;
Q.push(dij);
while(!Q.empty()){
node dij1=Q.top();
Q.pop();
int root=dij1.poi;
if(vis[root]==true)
continue;
vis[root]=true;
for(int i=head[root] ; i!=-1 ; i=edge[i].next){
if(dis[edge[i].to]>dis[root]+edge[i].w){
dis[edge[i].to]=edge[i].w+dis[root];
//cout<<dis[edge[i].to]<<" "<<edge[i].to<<endl;
if(vis[edge[i].to]==false){
node dij2;
dij2.poi=edge[i].to;
dij2.dis=dis[edge[i].to];
Q.push(dij2);
}
}
}
}
cout<<dis[t];
return 0;
}