POJ3259-Wormholes
http://poj.org/problem?id=3259
越看越不像我写的了- -
#include<stdio.h> #define INF 0x0fffffff struct type { int s,t,len; }edge[30000]; int d[505],n,m,w,nedge=0; bool Bellman_Ford() { int j,k,u,v; bool f,isPossible=false; for(j=1;j<=n;j++) d[j]=INF; d[1]=0; for(j=1;j<=n-1;j++) { f=0; for(k=1;k<=nedge;k++) { u=edge[k].s; v=edge[k].t; if(d[v]>d[u]+edge[k].len) d[v]=d[u]+edge[k].len; f=1; } if(f==0) return false; } for(k=1;k<=nedge;k++) { u=edge[k].s; v=edge[k].t; if(d[v]>d[u]+edge[k].len) { d[v]=d[u]+edge[k].len; return 1; } } return 0; } int main(void) { int t,i,j,u,v,value; scanf("%d",&t); while(t--) { scanf("%d%d%d",&n,&m,&w); nedge=0; for(i=1;i<=m;i++) { scanf("%d%d%d",&u,&v,&value); nedge++; edge[nedge].s=u; edge[nedge].t=v; edge[nedge].len=value; nedge++; edge[nedge].s=v; edge[nedge].t=u; edge[nedge].len=value; } for(i=1;i<=w;i++) { scanf("%d%d%d",&u,&v,&value); nedge++; edge[nedge].s=u; edge[nedge].t=v; edge[nedge].len=-value; } if(Bellman_Ford()) printf("YES\n"); else printf("NO\n"); } return 0; }

浙公网安备 33010602011771号