zoj 1092 Arbitrage
2015-01-16 21:02
459 查看
找到这样一个环,使得钱能越变越多
找最长路,d[i][i],正好表示从i出发回到i的最长的路
然后找到这样一个路后判断知否存在大于1的情况
找最长路,d[i][i],正好表示从i出发回到i的最长的路
然后找到这样一个路后判断知否存在大于1的情况
#include <bits/stdc++.h> using namespace std; int n; char as[35][100]; double dd[35][35]; int findd(char k[]) { for (int i=0;i<n;i++){ if (strcmp(as[i],k)==0) return i; } return -1; } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int testcase=1; while(scanf("%d",&n)!=EOF&&n){ for (int i=0;i<n;i++){ scanf("%s",as[i]); } int m;scanf("%d",&m); memset(dd,0,sizeof(dd)); for (int i=0;i<n;i++){ dd[i][i]=1; } for (int i=0;i<m;i++){ char a[100];double b;char c[100]; scanf("%s%lf%s",a,&b,c); int xx=findd(a); int yy=findd(c); dd[xx][yy]=b; } for (int k=0;k<n;k++){ for (int i=0;i<n;i++){ for (int j=0;j<n;j++){ dd[i][j]=max(dd[i][k]*dd[k][j],dd[i][j]); } } } int ok=0; for (int i=0;i<n;i++){ if (dd[i][i]>1){ ok=1; break; } } if (ok) printf("Case %d: Yes\n",testcase++); else printf("Case %d: No\n",testcase++); } return 0; }
相关文章推荐
- ZOJ Problem Set - 1092 Arbitrage (Floyd)
- zoj 1092 Arbitrage
- zoj 1092 Arbitrage
- zoj 1092 && oij 2240 Arbitrage
- zoj1092-Arbitrage
- ZOJ 1092 Arbitrage (floyd变形)
- poj2240&zoj1092 Arbitrage(Bellman-Ford)
- ZOJ 1092 Arbitrage
- zoj 1092 Arbitrage
- zoj 1092 || poj 2240 Arbitrage(Floyd)
- zoj 1092 && poj 2240 Arbitrage (floyd算法)
- POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环)
- zoj 1092 Arbitrage (poj 2240)
- zoj-1092-Arbitrage
- zoj 1092 Arbitrage(最短路)
- zoj1092 Arbitrage
- zoj 1092 Arbitrage(最短路,floyd)
- zoj 1092||poj 2240 Arbitrage( bellman 最短路)
- ZOJ 1092 Arbitrage 【Floyd-Warshal】
- zoj1092--直接foldy函数!!