#include <bits/stdc++.h>
using namespace std;
#define OFFSET 1
int main() {
int N, M, ST;
while (cin >> N >> M) {
vector<vector<int>> vvi(N, vector<int>(N, 0));
for (; M--;) {
int temp_start, temp_end, temp_dist;
cin >> temp_start >> temp_end >> temp_dist;
vvi[temp_start - OFFSET][temp_end - OFFSET] = temp_dist;
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (i == j || vvi[i][j] == 0)
continue;
for (int k = 0; k < N; k++) {
if (i == k || j == k || vvi[k][i] == 0)
continue;
if (vvi[k][j] == 0 || vvi[k][i] + vvi[i][j] < vvi[k][j])
vvi[k][j] = vvi[k][i] + vvi[i][j];
}
}
}
// output the result as follows:
for (ST = 1; ST <= N; ST++) {
cout << "start position: " << ST << endl;
for (int i = 0; i < N; i++) {
if (i + 1 == ST)
continue;
else if (vvi[ST - OFFSET][i] == 0)
cout << "there is no path from " << ST << " to " << i + 1 << endl;
else
cout << "the shortest distance from " << ST << " to " << i + 1 << " is " << vvi[ST - OFFSET][i] << endl;
}
cout << endl;
}
}
return 0;
}
/*
example:
7 10
1 2 8
1 3 5
1 4 3
2 5 3
3 2 2
3 6 5
3 7 2
6 4 9
7 5 6
7 6 2
*/执行结果:
7 10
1 2 8
1 3 5
1 4 3
2 5 3
3 2 2
3 6 5
3 7 2
6 4 9
7 5 6
7 6 2
start position: 1
the shortest distance from 1 to 2 is 7
the shortest distance from 1 to 3 is 5
the shortest distance from 1 to 4 is 3
the shortest distance from 1 to 5 is 10
the shortest distance from 1 to 6 is 9
the shortest distance from 1 to 7 is 7
start position: 2
there is no path from 2 to 1
there is no path from 2 to 3
there is no path from 2 to 4
the shortest distance from 2 to 5 is 3
there is no path from 2 to 6
there is no path from 2 to 7
start position: 3
there is no path from 3 to 1
the shortest distance from 3 to 2 is 2
the shortest distance from 3 to 4 is 13
the shortest distance from 3 to 5 is 5
the shortest distance from 3 to 6 is 4
the shortest distance from 3 to 7 is 2
start position: 4
there is no path from 4 to 1
there is no path from 4 to 2
there is no path from 4 to 3
there is no path from 4 to 5
there is no path from 4 to 6
there is no path from 4 to 7
start position: 5
there is no path from 5 to 1
there is no path from 5 to 2
there is no path from 5 to 3
there is no path from 5 to 4
there is no path from 5 to 6
there is no path from 5 to 7
start position: 6
there is no path from 6 to 1
there is no path from 6 to 2
there is no path from 6 to 3
the shortest distance from 6 to 4 is 9
there is no path from 6 to 5
there is no path from 6 to 7
start position: 7
there is no path from 7 to 1
there is no path from 7 to 2
there is no path from 7 to 3
the shortest distance from 7 to 4 is 11
the shortest distance from 7 to 5 is 6
the shortest distance from 7 to 6 is 2

京公网安备 11010502036488号