记录编号 |
486468 |
评测结果 |
AAAAAAAA |
题目名称 |
双服务点设置 |
最终得分 |
100 |
用户昵称 |
HtBest |
是否通过 |
通过 |
代码语言 |
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;
}