http://poj.org/problem?id=2240
简单题 1A 只是把结点变成了字符串 用map调下就好 数据量不大 floyd300+ms
货币之间的转换 问转换完是否能获利

1 #include <iostream> 2 #include<cstdio> 3 #include<string.h> 4 #include<map> 5 using namespace std; 6 double w[100][100]; 7 int main() 8 { 9 int i,j,k,n,m,kk =0 ; 10 char str[100],c1[100],c2[100]; 11 double x; 12 while(scanf("%d%*c",&n)&&n) 13 { 14 kk++; 15 memset(w,0,sizeof(w)); 16 map<string,int>f; 17 for(i = 1; i <= n ; i++) 18 { 19 gets(str); 20 f[str] = i; 21 } 22 scanf("%d%*c",&m); 23 while(m--) 24 { 25 scanf("%s %lf %s",c1,&x,c2); 26 if(f[c1]&&f[c2]) 27 w[f[c1]][f[c2]] = x; 28 } 29 int flag = 0; 30 for(i = 1; i <= n; i++) 31 for(j = 1; j <= n; j++) 32 for(k = 1; k <= n; k++) 33 if(w[j][k]<w[j][i]*w[i][k]) 34 w[j][k] = w[j][i]*w[i][k]; 35 for(i = 1 ; i <= n ; i++) 36 if(w[i][i]>1.0) 37 { 38 flag = 1; 39 break; 40 } 41 printf("Case %d: ",kk); 42 if(flag) 43 printf("Yes\n"); 44 else 45 printf("No\n"); 46 } 47 return 0; 48 }