标签:
题目链接:http://acm.swust.edu.cn/problem/412/
5
13 2 3
4 0 0
12 4 5
20 0 0
40 0 0
|
81 |
1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 using namespace std; 5 #define inf 0x3f3f3f 6 7 int n, ptr[101], mpt[101][101], L, R; 8 void Floyd(){ 9 for (int k = 1; k <= n; k++){ 10 for (int i = 1; i <= n; i++){ 11 for (int j = 1; j <= n; j++) 12 mpt[i][j] = min(mpt[i][j], mpt[i][k] + mpt[k][j]); 13 } 14 } 15 } 16 int main(){ 17 int i, j, sum, tmp; 18 while (cin >> n){ 19 sum = inf; 20 memset(mpt, inf, sizeof(mpt)); 21 for (i = 1; i <= n; i++){ 22 cin >> ptr[i] >> L >> R; 23 mpt[L][i] = mpt[i][L] = mpt[R][i] = mpt[i][R] = 1; 24 } 25 Floyd(); 26 for (i = 1; i <= n; i++){ 27 tmp = 0; 28 for (j = 1; j <= n; j++) { 29 if (i != j) 30 tmp += mpt[i][j] * ptr[j]; 31 } 32 sum = min(sum, tmp); 33 } 34 cout << sum << endl; 35 } 36 return 0; 37 }
标签:
原文地址:http://www.cnblogs.com/zyxStar/p/4602512.html