记录编号 486468 评测结果 AAAAAAAA
题目名称 双服务点设置 最终得分 100
用户昵称 GravatarHtBest 是否通过 通过
代码语言 C++ 运行时间 0.007 s
提交时间 2018-02-07 08:32:11 内存使用 0.22 MiB
显示代码纯文本
#define _CRT_SECURE_NO_DEPRECATE
/************************
*创建时间:2018 02 06
*文件类型:源代码文件
*题目来源:COGS
*采用算法:Floyd
*作者:HtBest
 ************************/
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int n,m,a[100][100],dota,dotb,mincost=1e9;
/* Variable explain:
n:节点个数 
m:边个数 
a:储存图 
dota:当前最优点1 
dotb:当前最优点2 
mincost:当前最优值 
*/
void read()
{
	freopen("djsb.in","r",stdin);
	freopen("djsb.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;++i)
		for(int j=0;j<n;++j)
			a[i][j]=i==j?0:1e9;
	register int ls1,ls2,ls3; 
	for(int i=0;i<m;++i)
	{
		scanf("%d%d%d",&ls1,&ls2,&ls3);
		a[ls1][ls2]=ls3;
		a[ls2][ls1]=ls3;
	}
	return;
}
void floyd()
{
	for(register int k=0;k<n;++k)
		for(register int i=0;i<n;++i)
			for(register int j=0;j<n;++j)
				a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
	return;
}
void find()//查找最优解函数
{
	for(register int i=0;i<n;++i)
	{
		for(register int j=i+1;j<n;++j)
		{
			register int ls1=0;
			if(i!=j)
			{
				register int ls2=0;
				for(register int k=0;k<n;++k)
				{
					ls2=min(a[i][k],a[j][k]);
					ls1=max(ls1,ls2);
				}
				if(ls1<mincost)
				{
					mincost=ls1;
					dota=i;
					dotb=j;
				}
			}
		}
		
	}
}
int main()
{
	read();
	floyd();
	find();
	printf("%d %d",dota,dotb);
	return 0;
}