求助,为什么第一个点wa了

P1993 小 K 的农场


by FadedAW @ 2018-08-14 16:34:42


``` #include<bits/stdc++.h> using namespace std; const int N=50000+5; int n,m,d[10000+5],cnt[10000+5]; int head[N],ver[N],edge[N],Next[N],tot; bool v[10000+5],flag=false; void add(int x,int y,int z){ tot++;edge[tot]=z;ver[tot]=y;Next[tot]=head[x];head[x]=tot; } void spfa(int x){ v[x]=true; for(int i=head[x];i;i=Next[i]){ int y=ver[i],z=edge[i]; if(d[y]>d[x]+z){ if(v[y]){ flag=true; return ; } d[y]=d[x]+z; spfa(y); } } } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ int bi;scanf("%d",&bi); if(bi==1){ int x,y,z; scanf("%d%d%d",&x,&y,&z); add(x,y,-z);// x-y>=z } else if(bi==2){ int x,y,z; scanf("%d%d%d",&x,&y,&z); add(y,x,z);//x-y<=z } else { int x,y; scanf("%d%d",&x,&y); add(x,y,0);add(y,x,0); } } for(int i=1;i<=n;i++){ d[i]=0; spfa(i); if(flag)break; } if(flag==true)printf("No\n"); else printf("Yes\n"); return 0; } ```
by FadedAW @ 2018-08-14 16:35:06


巧了我也是
by wangyitong @ 2018-08-22 10:08:29


|