#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#define MAXN 205
#define MAX 500000
using namespace std;
int map[MAXN][MAXN];
int N, M, K, a, b, dis;
struct Road
{
int city;
int len;
} road[MAXN];
bool cmp(Road a, Road b)
{
return a.len < b.len || (a.len == b.len && a.city < b.city);
}
void make()
{
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
{
map[i][j] = MAX;
if (i == j)
map[i][j] = 0;
}
}
void solve()
{
for (int k = 0; k < N; k++)
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
{
if (map[i][k] + map[k][j] < map[i][j])
{
map[i][j] = map[i][k] + map[k][j];
map[j][i] = map[i][j];
}
}
for (int i = 1; i < N; i++)
road[i - 1].city = i, road[i - 1].len = map[0][i];
sort(road, road + (N - 1), cmp);
cout << road[K - 1].city << endl;
}
int main()
{
while (cin >> N, N)
{
cin >> M;
make();
for (int i = 0; i < M; i++)
{
cin >> a >> b >> dis;
map[a][b] = map[b][a] = dis;
}
cin >> K;
solve();
}
}
TOJ:2870. The K-th City
最新推荐文章于 2017-11-17 23:51:04 发布