POJ 2240 Arbitrage
2013-08-07 17:22
281 查看
这个题也是十分水的题,节点最多只有30个。
Floyd就可以过的哈。
需要注意的是:
1、不要用gets(),因为中间有空行;
2、注意输出的是Yes,No。
下面是代码:
Floyd就可以过的哈。
需要注意的是:
1、不要用gets(),因为中间有空行;
2、注意输出的是Yes,No。
下面是代码:
#include <stdio.h> #include <string.h> const int inf=1<<30; const int V=105; int n; double map1[V][V]; char s[35][200]; int find1() { char s1[200]; scanf("%s",s1); for(int i=0; i<n; i++) { if(strcmp(s[i],s1)==0) { return i; } } } void flody(int n) { int i,j,k; for(k=0; k<n; k++) { for(i=0; i<n; i++) { for(j=0; j<n; j++) { if(map1[i][j]<map1[i][k]*map1[k][j]) { map1[i][j]=map1[i][k]*map1[k][j]; } } } } } int main() { int in=1; while(scanf("%d",&n),n) { int i,j,t,a,b,flat=0; double d; for(i=0; i<n; i++) { scanf("%s",s[i]); } scanf("%d",&t); for(i=0;i<n;i++) { for(j=0;j<n;j++) { map1[i][j]=1.0; } } for(i=0; i<t; i++) { a=find1(); scanf("%lf",&d); b=find1(); map1[a][b]=d; } flody(n); for(i=0;i<n;i++) { if(map1[i][i]>1.0) //判断条件 { flat=1; } } if(flat) { printf("Case %d: Yes\n",in); } else { printf("Case %d: No\n",in); } in++; } return 0; }
相关文章推荐
- POJ 2240 Arbitrage
- poj 2240 Arbitrage
- Poj_2240 Arbitrage(最短路)
- Arbitrae -----spfa算法 --- poj-2240-Arbitrage
- poj 2240 Arbitrage 题解
- POJ-2240-Arbitrage
- poj 2240--Arbitrage
- POJ 2240 && HDU 1217 Arbitrage(Floyd)
- POJ - 2240(Arbitrage)弗洛伊德 变形 get最长路
- POJ2240---Arbitrage(最短路:验证是否正环)
- POJ 2240 Arbitrage
- zoj 1092 && poj 2240 Arbitrage (floyd算法)
- POJ 2240 Arbitrage
- POJ 2240 or HDU 1217 Arbitrage 【spfa判环】
- poj 2240(bellman_ford 算法)(最短路负权)Arbitrage
- POJ 2240 Arbitrage【Bellman_ford坑】
- POJ 2240 Arbitrage (spfa)
- Bellman-Ford||SPFA-POJ-2240-Arbitrage
- hdu 1217/poj 2240 Arbitrage【floyd】
- POJ - 2240 Arbitrage(SPFA判断正环| 前向星+SPFA尝试)