标签:
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