POJ1860-Currency Exchange
http://poj.org/problem?id=1860
好像当初百度了一下来着- -#
#include<stdio.h> #include<string.h> int N,M,S,cnt; double V; struct edge { int u,v; double r,c; }E[201]; int bellman() { int i, f; double d[110]; memset(d,0,sizeof(d)); d[S]=V; while(d[S]<=V) { f=0; for(i=0;i<cnt;i++) { if(d[E[i].v]<(d[E[i].u]-E[i].c)*E[i].r) { d[E[i].v]=(d[E[i].u]-E[i].c)*E[i].r; f=1; } } if(!f) return d[S]>V; } return 1; } int main(void) { int a,b,i; double rab,cab,rba,cba; scanf("%d%d%d%lf",&N,&M,&S,&V); cnt=0; for(i=0;i<M;i++) { scanf("%d%d",&a,&b); scanf("%lf%lf%lf%lf",&rab,&cab,&rba,&cba); E[cnt].u=a; E[cnt].v=b; E[cnt].r=rab; E[cnt].c=cab; cnt++; E[cnt].u=b; E[cnt].v=a; E[cnt].r=rba; E[cnt].c=cba; cnt++; } if(bellman()) printf("YES\n"); else printf("NO\n"); return 0; }