Arbitrage--POJ 2240

1、题目类型:图论、最短路径、Floyd算法。

2、解题思路:Floyd算法的简单应用;STL中map的简单应用。

3、注意事项:避免map报警告,文件开始调用#pragma warning(disable:4786)。

4、实现方法:

#pragma warning(disable:4786)
#include
<iostream>
#include
<map>
#include
<string>
using namespace std;

double Map[30][30];
int n;
map
<string,int>node;

void Floyed()
{
int i,j,k;
for(k=0;k<n;k++)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if( Map[i][j]<Map[i][k]*Map[k][j] )
Map[i][j]
=Map[i][k]*Map[k][j];
}
}

int main()
{
int i,j=0,m;
double k;
bool flag;
string tmp,tmp1;
while(cin>>n&&n)
{
j
++;
flag
=0;
memset(Map,
0,sizeof(Map));
for(i=0;i<n;i++)
{
Map[i][i]
=1.0;
cin
>>tmp;
node[tmp]
=i;
}
cin
>>m;
for(i=0;i<m;i++)
{
cin
>>tmp>>k>>tmp1;
Map[node[tmp]][node[tmp1]]
=k;
}
Floyed();
for(i=0;i<n;i++)
{
if(Map[i][i]>1.0)
{
flag
=1;
break;
}
}
cout
<<"Case "<<j<<": ";
if(flag)
cout
<<"Yes"<<endl;
else
cout
<<"No"<<endl;
}
return 0;
}

 

posted @ 2010-08-19 21:14  勇泽  阅读(217)  评论(0编辑  收藏  举报