标签:
ArbitrageUlm Local 1996
#include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<map> #include<string> using namespace std; double cost[32][32]; double dis[32]; int n,m; map<string,int>mapstring; bool Bellman_Ford() { for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { if(cost[i][j]<cost[i][k]*cost[k][j]) cost[i][j]=cost[i][k]*cost[k][j]; } for(int i=1;i<=n;i++) if(cost[i][i]>1) return true; return false; } int main() { // freopen("in.txt","r",stdin); string s,s1,s2; double c;int cnt=1; while(1){ scanf("%d",&n); if(n==0) break; for(int i=1;i<=n;i++) { cost[i][i]=1; cin>>s; mapstring[s]=i; } scanf("%d",&m); for(int i=1;i<=m;i++) { cin>>s1>>c>>s2; cost[mapstring[s1]][mapstring[s2]]=c; } int ans=Bellman_Ford(); if(ans) printf("Case %d: Yes\n",cnt++); else printf("Case %d: No\n",cnt++); } return 0; }
标签:
原文地址:http://blog.csdn.net/yuanchang_best/article/details/43153643