POJ 1125(Floyd)

来源:互联网 发布:淘宝助理如何加水印 编辑:程序博客网 时间:2024/04/30 20:19

裸Floyd


Program P1125;const   maxn=100;   maxedge=10;   NULL=-2139062144;var   n,i,j,k,m,v,t,ans:longint;   f:array[1..maxn,1..maxn] of longint;function max(a,b:longint):longint;begin   if a<b then exit(b) else exit(a);end;begin   read(n);   while (n<>0) do   begin      fillchar(f,sizeof(f),128);      for i:=1 to n do      begin         f[i,i]:=0;         read(m);         for j:=1 to m do         begin            read(v,t);            f[i,v]:=t;         end;      end;      for k:=1 to n do         for i:=1 to n do            for j:=1 to n do               if (f[i,k]<>NULL) and (f[k,j]<>NULL) then                  if (f[i,k]+f[k,j]<f[i,j]) or (f[i,j]=NULL) then f[i,j]:=f[i,k]+f[k,j];      ans:=maxlongint;      v:=0;      for i:=1 to n do      begin         t:=f[i,1];         for j:=1 to n do         begin            if f[i,j]=NULL then break else t:=max(f[i,j],t);         end;         if f[i,j]=NULL then continue;         if t<ans then begin v:=i; ans:=t; end;      end;      if (ans=maxlongint) then writeln('disjoint') else writeln(v,' ',ans);      read(n);   end;end.


原创粉丝点击