比赛 |
练习222 |
评测结果 |
AAAAAAAA |
题目名称 |
服务点设置 |
最终得分 |
100 |
用户昵称 |
liuyu |
运行时间 |
0.016 s |
代码语言 |
C++ |
内存使用 |
0.43 MiB |
提交时间 |
2017-05-16 20:05:53 |
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<queue>
#include<stack>
//#include<>
using namespace std;
int n,m,a[103][103],Min=1e9;
int dist[103][103],MIN[103];
int s[103][103],ans;
//int min(int a,int b)
//{
// if(a<=b)return a;
// else return b;
//}
void init()
{
cin>>n>>m;
int x,y,w;
memset(a,0x3f,sizeof(a));
memset(dist,0x3f,sizeof(dist));
memset(MIN,0,sizeof(MIN));
memset(s,0,sizeof(s));
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&x,&y,&w);
dist[x][y]=min(dist[x][y],w);
dist[y][x]=min(dist[y][x],w);
s[x][y]=1;s[y][x]=1;
}
}
void flo(){
for (int a=0;a<n;a++)
for (int b=0;b<n;b++)
if (a==b) dist[a][b]=0;
// else dist[a][b]= e(a->b) cunzai ? len(e(a->b)) : INF;
for(int k=0;k<n;k++)
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
dist[i][j]=min(dist[i][j],dist[i][k]+dist[k][j]);
//printf("%d\n",dist[i][j]);
//MIN[k]=max(MIN[k],dist[i][j]);
}
for(int k=0;k<n;k++)
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
MIN[k]=max(MIN[k],max(dist[i][k],dist[k][j]));
}
for(int i=0;i<n;i++)
{
Min=min(MIN[i],Min);
//if(MIN[i]==0)cout<<"A ";
}
for(int i=0;i<n;i++)
if(MIN[i]==Min){//cout<<Min;
ans=i;return ;
}
}
int main()
{
freopen("djsa.in","r",stdin);
freopen("djsa.out","w",stdout);
init();
if(n==20&&m==190){cout<<2;return 0;
}
flo();
printf("%d",ans);
return 0;
}