纯裸的folyd,但是题意太难了,看了半天没看懂,还是google的题意。
//
// main.cpp
// Richard
//
// Created by 邵金杰 on 16/8/15.
// Copyright © 2016年 邵金杰. All rights reserved.
//
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100+5;
const int INF=100000000;
int N;
int map[maxn][maxn];
void Input()
{
for(int i=1;i<=N;i++)
{
for(int j=1;j<=N;j++)
{
if(i==j) map[i][j]=0;
else map[i][j]=INF;
}
}
for(int i=1;i<=N;i++)
{
int t,e,w;
scanf("%d",&t);
for(int j=1;j<=t;j++)
{
scanf("%d%d",&e,&w);
map[i][e]=w;
}
}
}
void folyd()
{
for(int k=1;k<=N;k++)
{
for(int i=1;i<=N;i++)
{
for(int j=1;j<=N;j++)
{
map[i][j]=min(map[i][j],map[i][k]+map[k][j]);
}
}
}
}
void Output()
{
int Min=INF,p=0;
for(int i=1;i<=N;i++)
{
int Max=-INF,position=0;
for(int j=1;j<=N;j++)
{
if(i==j) continue;
if(Max<map[i][j])
{
Max=map[i][j];
position=i;
}
}
if(Min>Max) {Min=Max;p=position;}
}
printf("%d %d\n",p,Min);
}
int main()
{
while(scanf("%d",&N)&&N)
{
Input();
folyd();
Output();
}
return 0;
}