题目大意
就是在一个有向图中找一个点,要求这个点和离他最远的点的最短路最近。
分析
直接上floyd,水~~~
code
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define fo(i,a,b) for (int i=a;i<=b;i++)
#define dfo(i,a,b) for (int i=a;i>=b;i--)
using namespace std;
int f[101][101];
int n;
int main()
{
while(scanf("%d",&n)!=EOF && n)
{
fo(i,1,n)
fo(j,1,n)
f[i][j]=1000000;
fo(i,1,n)
{
int m=0;
scanf("%d",&m);
fo(j,1,m)
{
int a,b;
scanf("%d%d",&a,&b);
f[i][a]=b;
}
}
fo(k,1,n)
fo(i,1,n)
fo(j,1,n)
if ((i!=j)&&(i!=k)&&(j!=k))
if (f[i][j]>f[i][k]+f[k][j])
f[i][j]=f[i][k]+f[k][j];
int ans=0;
int num=1000000;
fo(i,1,n)
{
int ma=0;
fo(j,1,n)
{
if (i==j)
continue;
ma=max(ma,f[i][j]);
}
if (num>ma)
{
num=ma;
ans=i;
}
}
printf("%d %d\n",ans,num);
}
}