记录编号 | 388663 | 评测结果 | AAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | 双服务点设置 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.014 s | ||
提交时间 | 2017-03-29 17:12:20 | 内存使用 | 0.37 MiB | ||
#include <fstream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; ifstream fin("djsb.in"); ofstream fout("djsb.out"); const int INF=200000; int D[120][120]; int d[120]; int n,m; struct UN { int d;int u; bool operator <(const UN &x)const { return d<x.d; } }; int main() { fin>>n>>m; for(int i=0;i<n;++i) { for(int j=0;j<n;++j) { D[i][j]=(i==j?0:INF); } } int p1,p2,dis; for(int i=0;i<m;++i) { fin>>p1>>p2>>dis; D[p1][p2]=D[p2][p1]=dis; } for(int k=0;k<n;++k) { for(int i=0;i<n;++i) for(int j=0;j<n;++j) { D[i][j]=min(D[i][j],D[i][k]+D[k][j]); } } int ri=0,rj=0,maxs=INF; int temp=0; for(int i=n-1;i>=0;--i) { for(int j=n-1;j>=0;--j) { for(int p=0;p<n;++p) { d[p]=min(D[p][i],D[p][j]); } temp=*max_element(d,d+n); if(temp<=maxs&&i!=j) { maxs=temp; ri=i;rj=j; } } } fout<<ri<<' '<<rj; }