标签:
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 10997 | Accepted: 4622 |
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 <vector>
#include <string.h>
#include <queue>
using namespace std;
int n,m;
//邻接表
vector<int>map[33];
//存贮国家名字
char name[33][100];
//两个国家的汇率
double f[33][33];
//起点国家到当前国家转换后的货币量
double price[33];
//入度
int in_degree[33];
//进队列的次数
int sum[33];
//是否在队列
bool in_queue[33];
int tonum(char *str)
{
for(int i=0;i<n;i++)
if(strcmp(str,name[i])==0)
return i;
}
bool spfa(int x)
{
queue<int>s;
sum[x]++;
price[x]=1.0;
in_queue[x]=true;
s.push(x);
while(!s.empty())
{
int pos=s.front();
s.pop();
in_queue[pos]=false;
for(int i=0;i<map[pos].size();i++)
{
int edge=map[pos][i];
if(price[edge]<price[pos]*f[pos][edge])
{
price[edge]=price[pos]*f[pos][edge];
if(!in_queue[edge])
{
in_queue[edge]=true;
s.push(edge);
if(++sum[edge]>in_degree[edge])
{
return true;
}
}
}
}
}
return false;
}
int main()
{
int t=0;
while(~scanf("%d",&n))
{
if(n==0)
break;
memset(in_degree,0,sizeof(in_degree));
memset(name,0,sizeof(name));
memset(map,0,sizeof(map));
memset(f,0,sizeof(f));
for(int i=0;i<n;i++)
scanf("%s",name[i]);
scanf("%d",&m);
for(int i=0;i<m;i++)
{
char str1[100],str2[100];
memset(str1,0,sizeof(str1));
memset(str2,0,sizeof(str2));
double x;
scanf("%s %lf %s",str1,&x,str2);
int a=tonum(str1);
int b=tonum(str2);
f[a][b]=x;
in_degree[b]++;
map[a].push_back(b);
}
bool ok=false;
for(int i=0;i<n;i++)
{
if(spfa(i))
{
ok=true;
break;
}
memset(in_queue,false,sizeof(in_queue));
memset(price,0,sizeof(price));
memset(sum,0,sizeof(sum));
}
if(ok)
printf("Case %d: Yes\n",++t);
else
printf("Case %d: No\n",++t);
}
return 0;
}标签:
原文地址:http://blog.csdn.net/su20145104009/article/details/50937787