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