标签:des style http color os io strong for ar
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 15806 | Accepted: 6648 |
Description
Input
Output
Sample Input
3 USDollar BritishPound FrenchFranc 3 USDollar 0.5 BritishPound BritishPound 10.0 FrenchFranc FrenchFranc 0.21 USDollar 3 USDollar BritishPound FrenchFranc 6 USDollar 0.5 BritishPound USDollar 4.9 FrenchFranc BritishPound 10.0 FrenchFranc BritishPound 1.99 USDollar FrenchFranc 0.09 BritishPound FrenchFranc 0.19 USDollar 0
Sample Output
Case 1: Yes Case 2: No
Source
算法思想:从源点逐次途经其他顶点,以缩短到达终点的最短路径长度。限制:图中不含权值总和为负值的回路。
#include"stdio.h" #include"string.h" #include"queue" #include"iostream" #include"algorithm" using namespace std; #define N 50 #define LL __int64 const int inf=0; struct node { int u,v; double d; }e[N*N]; int m,n; double dis[N]; bool bellman() { int i,j,u,v; for(i=0;i<n;i++) //初始化为0 dis[i]=inf; dis[0]=1; for(i=1;i<=n;i++) //从dis[0]递推到dis[1]....dis[n]; { for(j=0;j<m;j++) { u=e[j].u; v=e[j].v; if(dis[u]&&dis[v]<dis[u]*e[j].d) //若经过某一点能使从源点到该终点的最短路缩短,此为增大 dis[v]=dis[u]*e[j].d; //则修改该点值,即松弛 } } return dis[0]>1; } int main() { int i,j,k,cnt=1; double d; char str[N][N],a[N],b[N]; while(scanf("%d",&n),n) { for(i=0;i<n;i++) scanf("%s",str[i]); scanf("%d",&m); for(i=0;i<m;i++) { scanf("%s %lf %s",a,&d,b); for(j=0;strcmp(str[j],a);j++) ; for(k=0;strcmp(str[k],b);k++) ; e[i].u=j; e[i].v=k; e[i].d=d; } printf("Case %d: ",cnt++); bool flag=bellman(); if(flag) printf("Yes\n"); else printf("No\n"); } return 0; }
poj 2240 Arbitrage(Bellman-Ford算法学习)
标签:des style http color os io strong for ar
原文地址:http://blog.csdn.net/u011721440/article/details/38759733