首页 > 代码库 > HDOJ 1217 Floyed Template
HDOJ 1217 Floyed Template
1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 #include <cstring> 5 #include<map> 6 using namespace std; 7 8 map<string,int>name; 9 const int INF = 1000000; 10 const int MAXSIZE = 1005; 11 const int MAXN = 30; 12 double g[MAXN][MAXN]; 13 14 //dis[][]记录任意两点间的最短路径,初始的dis[][]记录直接路径 15 void floyed(double dis[][MAXN],int n){//节点从1~n编号 16 int i,j,k; 17 for(k = 1; k <= n; k++) 18 for(i = 1; i <= n; i++) 19 for(j = 1; j <= n; j++) 20 if(dis[i][j] < dis[i][k] * dis[k][j]) 21 dis[i][j] = dis[i][k] * dis[k][j]; 22 } 23 int main(){ 24 int n,i,m,j; 25 string str1,str2; 26 double r; 27 int iCase = 0; 28 while(scanf("%d",&n),n){ 29 iCase++; 30 for(i = 1; i <= n; i++){ 31 cin>>str1; 32 name[str1] = i; 33 } 34 for(i = 1; i <= n; i++) 35 for(j = 1; j <= n; j++){ 36 if(i == j) g[i][j] = 1; 37 else g[i][j] = 0; 38 } 39 scanf("%d",&m); 40 while(m--){ 41 cin>>str1>>r>>str2; 42 g[name[str1]][name[str2]] = r; 43 } 44 45 floyed(g,n); 46 47 bool flag = false; 48 for(i = 1; i <= n; i++){ 49 if(g[i][i] > 1){ 50 flag = true; 51 break; 52 } 53 } 54 if(flag) printf("Case %d: Yes\n",iCase); 55 else printf("Case %d: No\n",iCase); 56 } 57 return 0; 58 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。