1 条题解
-
0
C++ :
#include <iostream> using namespace std; int nRoom = 0; int map[2001][2001] = {0}; int szDis[2001] = {-1}; int szFlag[2001] = {false}; int main() { cin >>nRoom; int x = 0, y = 0, rp = 0; cin >>x >>y >>rp; while (x | y | rp != 0) { map[x][y] = rp; cin >>x >>y >>rp; } szDis[1] = 0x7fffffff; int s = 1; int min = 0x7fffffff; int max = 0; for (int i = 1; i < nRoom; ++i) { szFlag[s] = true; for (int j = 2; j <= nRoom; ++j) { if (!szFlag[j] && map[s][j] > 0) { min = szDis[s] < map[s][j] ? szDis[s] : map[s][j]; if (min > szDis[j]) { szDis[j] = min; } } } s = 0; max = 0; for (int j = 2; j <= nRoom; ++j) { if (!szFlag[j] && max < szDis[j]) { max = szDis[j]; s = j; } } if (s == 0) break; } for (int i = 2; i <= nRoom; ++i) { cout <<szDis[i] <<endl; } }
- 1
信息
- ID
- 1454
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者