zoj 1092 Arbitrage(最短路,floyd)
2011-10-25 12:43
375 查看
最短路的floyd算法,具体说,理解的还不透彻啊!!!还得刷,还得刷!刚开始数据输入和记录方法采用的是zoj 1952的方法,但是改了好几次一直WA。。。和媛姐的对照了一下,改了改数据记录方式。。。。
#include<stdio.h> #include<string.h> typedef struct ss { char s[100]; }node; node a[500]; int n,r,p,tx,ty; char s1[100],s2[100]; double w[32][32],ww; void sort() { int i,j,t; for(i=0;i<r;i++) { scanf("%s%lf%s",s1,&ww,s2); for(t=0,j=0;t!=2;j++) { if(strcmp(s1,a[j].s)==0) { t++; tx=j; } if(strcmp(s2,a[j].s)==0) { t++; ty=j; } } w[tx][ty]=ww; } } int main() { int i,j,ncase=1,flag; while(scanf("%d",&n)&&n) { for(i=0;i<n;i++) for(j=0;j<n;j++) { if(i==j) w[i][j]=1.0; else w[i][j]=0.0; } flag=0; for(i=0;i<n;i++) scanf("%s",a[i].s); scanf("%d",&r); sort(); for(int k=0;k<n;k++) for(i=0;i<n;i++) for(j=0;j<n;j++) if(w[i][j]<w[i][k]*w[k][j]) w[i][j]=w[i][k]*w[k][j]; for(i=0;i<n;i++) if(w[i][i]>1) { flag=1; break; } if(flag) printf("Case %d: Yes\n",ncase++); else printf("Case %d: No\n",ncase++); } return 0; }
相关文章推荐
- zoj 1092 Arbitrage(最短路)
- ZOJ 1092 Arbitrage 【Floyd-Warshal】
- ZOJ 1092 Arbitrage (floyd变形)
- zoj 1092||poj 2240 Arbitrage( bellman 最短路)
- ZOJ Problem Set - 1092 Arbitrage (Floyd)
- zoj 1092 || poj 2240 Arbitrage(Floyd)
- 最短路(Floyd_Warshall) POJ 2240 Arbitrage
- ZOJ 3166 Lazy Tourist 最短路floyd模版题
- POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环)
- POJ 2240 Arbitrage 最短路 Floyd
- POJ 2240 Arbitrage(Floyd最短路)
- zoj 1092 Arbitrage (poj 2240)
- zoj 1221 Risk 最短路 floyd
- uva 104 - Arbitrage(最短路Floyd)
- POJ 2240 && ZOJ 1082 Arbitrage 最短路,c++ stl pass g++ tle 难度:0
- zoj 1092 Arbitrage
- zoj 3166 Lazy Tourist 最短路 floyd
- poj2240(Floyd最短路的变种---最长路 )Arbitrage
- POJ 2240 Arbitrage(最短路 Floyd)
- zoj 1092 && oij 2240 Arbitrage