HDOJ 1217 Floyd
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDOJ 1217 Floyd相关的知识,希望对你有一定的参考价值。
1 #include <iostream> 2 #include <string> 3 #include <map> 4 5 using namespace std; 6 7 map<string, int> edge; 8 double matrix[30][30]; 9 10 bool floyd_Arbitrage(int n){ 11 for (int k = 0; k < n; k++) 12 for (int i = 0; i < n; i++) 13 for (int j = 0; j < n; j++) 14 if (matrix[i][k] * matrix[k][j] - matrix[i][j] > 1e-8) 15 if (i == j) 16 return true; 17 else 18 matrix[i][j] = matrix[i][k] * matrix[k][j]; 19 return false; 20 } 21 22 int main(){ 23 int n; 24 int count = 0; 25 while (cin >> n && n){ 26 int m; 27 count += 1; 28 for (int i = 0; i < n; i++) 29 for (int j = 0; j < n; j++){ 30 if (i != j) 31 matrix[i][j] = 0; 32 else 33 matrix[i][j] = 1; 34 } 35 for (int i = 0; i < n; i++){ 36 string temp; 37 cin >> temp; 38 edge[temp] = i; 39 } 40 cin >> m; 41 for (int i = 0; i < m; i++){ 42 string head, tail; 43 double temp; 44 cin >> head >> temp >> tail; 45 matrix[edge[head]][edge[tail]] = temp; 46 } 47 if (floyd_Arbitrage(n)) 48 cout << "Case " << count << ": Yes\n"; 49 else 50 cout << "Case " << count << ": No\n"; 51 } 52 return 0; 53 }
以上是关于HDOJ 1217 Floyd的主要内容,如果未能解决你的问题,请参考以下文章
HDOJ 1217 Arbitrage(拟最短路,floyd算法)
hdoj2544 最短路(Dijkstra || Floyd || SPFA)