纯裸的最短路,因为最多只有52个点,floyd,spfa,dijksta都可以,不过记得判重边

{
ID:lucky141
PROG:comehome
LANG:PASCAL
}
program comehome;
var
  a:array['A'..'z','A'..'z'] of longint;
  b:array['A'..'z',1..52] of char;
  l:array['A'..'z'] of integer;
  d:array['A'..'z'] of longint;
  flag:array['A'..'z'] of boolean;
  q:array[1..10000] of char;
  n:integer;
  max,w:longint;
  i,ans:char;
procedure init;
var
  i,x,code:integer;
  s:string;
  p,q:char;
begin
  readln(n);
  for i:=1 to n do
  begin
    readln(s);
    p:=s[1];
    q:=s[3];
    delete(s,1,4);
    val(s,x,code);
    if (a[p,q]=0) or (a[p,q]>x) then
    begin
      if a[p,q]=0 then
      begin
        inc(l[p]);
        b[p,l[p]]:=q;
        inc(l[q]);
        b[q,l[q]]:=p;
      end;
      a[p,q]:=x;
      a[q,p]:=x;
    end;
  end;
end;
procedure spfa;
var
  head,tail,j:integer;
  k:char;
begin
  fillchar(d,sizeof(d),$5F);
  fillchar(q,sizeof(q),0);
  fillchar(flag,sizeof(flag),true);
  w:=d[i];
  d[i]:=0;
  flag[i]:=false;
  head:=0;
  tail:=1;
  q[1]:=i;
  while head<tail do
  begin
    inc(head);
    flag[q[head]]:=true;
    for j:=1 to l[q[head]] do
    begin
      k:=b[q[head],j];
      if d[k]>d[q[head]]+a[q[head],k] then
      begin
        d[k]:=d[q[head]]+a[q[head],k];
        if flag[k] then
        begin
          inc(tail);
          q[tail]:=k;
          flag[k]:=false;
        end;
      end;
    end;
  end;
  for i:='A' to 'Y' do
    if (d[i]<>w) and (d[i]<max) then
    begin
      max:=d[i];
      ans:=i;
    end;
end;
begin
  assign(input,'comehome.in');
  reset(input);
  assign(output,'comehome.out');
  rewrite(output);
  fillchar(a,sizeof(a),0);
  init;
  max:=maxlongint;
  i:='Z';
  spfa;
  writeln(ans,' ',max);
  close(input);
  close(output);
end.