比赛 ctime蒟蒻生日赛 评测结果 AAAAAAAA
题目名称 双服务点设置 最终得分 100
用户昵称 胡嘉兴 运行时间 0.077 s
代码语言 C 内存使用 0.14 MiB
提交时间 2017-10-17 15:07:38
显示代码纯文本
#include <stdio.h>

#define N 120
#define INF 99999999

int MIN(int a, int b)
{
	if(a > b)
	{
		return b;
	}
	else
	{
		return a;
	}
}

int main()
{
	int n, m, i, j, k, e[N][N], min = INF, ansi, ansj;
	freopen("djsb.in", "r+", stdin);
	freopen("djsb.out", "w+", stdout);

	scanf("%d%d", &n, &m);

	for(i = 0; i < N; i++)
	{
		for(k = 0; k < N; k++)
		{
			if(i == k)
			{
				e[i][k] = 0;
				continue;
			}
			e[i][k] = INF;
		}
	}
	for(i = 0; i < m; i++)
	{
		int x, y, z;

		scanf("%d%d%d", &x, &y, &z);

		e[x][y] = z;
		e[y][x] = z;
	}
	for(k = 0; k < n; k++)
	{
		for(i = 0; i < n; i++)
		{
			for(j = 0; j < n; j++)
			{
				if(e[i][k] + e[k][j] < e[i][ j])
				{
					e[i][ j] = e[i][k] + e[k][ j];
				}
			}
		}
	}
	for(i = 0; i < n; i++)
	{
		for( j = i + 1; j < n; j++)
		{
			int maxs = 0;
			for(k = 0; k < n; k++)
			{
				int a = MIN(e[i][k], e[ j][k]);
				if(a > maxs)
				{
					maxs = a;
				}
			}
			if(maxs < min)
			{
				min = maxs;
				ansi = i;
				ansj = j;
			}
		}
	}

	printf("%d %d\n", ansi, ansj);

	fclose(stdin);
	fclose(stdout);
	return 0;
}