为什么第六个点会WA?

P1993 小 K 的农场

```cpp #include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; const int maxn=10000+10; int n,m; bool flag; bool vis[maxn]; int e,to[maxn<<1],nex[maxn<<1],beg[maxn],w[maxn<<1]; int dis[maxn]; void add(int u,int v,int ww) { to[++e]=v; nex[e]=beg[u]; beg[u]=e; w[e]=ww; } void spfa(int u) { if(flag)return; vis[u]=1; for(register int i=beg[u];i;i=nex[i]) { int v=to[i]; if(dis[u]+w[i]<dis[v]) { dis[v]=dis[u]+w[i]; if(!vis[v])spfa(v); else {flag=1;return;} } if(flag)return; } vis[u]=0; } int main() { //freopen("2.in","r",stdin); //freopen("2.out","w",stdout); scanf("%d%d",&n,&m); for(register int i=1;i<=n;++i) add(0,i,10); for(register int i=1;i<=m;++i) { int p,a,b,c; scanf("%d",&p); if(p==1) { scanf("%d%d%d",&a,&b,&c); add(a,b,c); } else if(p==2) { scanf("%d%d%d",&a,&b,&c); add(b,a,-c); } else if(p==3) { scanf("%d%d",&a,&b); add(a,b,0); add(b,a,0); } } memset(dis,127,sizeof(dis)); dis[0]=0; vis[0]=1; spfa(0); if(flag)printf("No\n"); else printf("Yes\n"); return 0; } ```
by cn_lemon @ 2018-04-06 10:57:40


|