首页 > 代码库 > poj 2240
poj 2240
题意;每两种货币之间有一种汇率 给定货币种类与汇率 问一种货币能否经过兑换后价值增大
思路:floyd算法的简单应用
#include<iostream> #include<cstring> using namespace std; double map[111][111]; char s[33][111]; int n; int get(char s1[]) { for(int i=1;i<=n;i++) if(strcmp(s[i],s1)==0) return i; } bool floyd() { int i,j,k; for(k=1;k<=n;k++) { for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(map[i][k]*map[k][j]>map[i][j]) map[i][j]=map[i][k]*map[k][j]; } for(i=1;i<=n;i++) if(map[i][i]>1) return true; return false; } int main() { int i,m; double rate; char s1[111],s2[111]; int cas=0; while(scanf("%d",&n)!=EOF) { cas++; if(n==0) break; memset(map,0,sizeof(map)); for(i=1;i<=n;i++) cin>>s[i]; cin>>m; while(m--) { cin>>s1>>rate>>s2; int u=get(s1); int v=get(s2); map[u][v]=rate; } if(floyd()) printf("Case %d: Yes\n",cas); else printf("Case %d: No\n",cas); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。