⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usaco 2_4_4 bessie come home 题解_leokan的blog.mht

📁 美国USACO题库源程序
💻 MHT
📖 第 1 页 / 共 5 页
字号:
<TABLE class=3Dmodth cellSpacing=3D0 cellPadding=3D0 width=3D"100%" =
border=3D0>
  <TBODY>
  <TR>
    <TD class=3Dmodtl width=3D7>&nbsp;</TD>
    <TD class=3Dmodtc noWrap>
      <DIV class=3Dmodhead><SPAN =
class=3Dmodtit>=B2=E9=BF=B4=CE=C4=D5=C2</SPAN></DIV></TD>
    <TD class=3Dmodtc noWrap align=3Dright>
      <DIV class=3Dmodopt><A class=3Dmodact=20
      href=3D"http://hi.baidu.com/leokan/creat/blog/"><IMG=20
      src=3D"http://img.baidu.com/hi/img/ico_postnew.gif" =
align=3DabsMiddle=20
      border=3D0>=D0=B4=D0=C2=CE=C4=D5=C2</A></DIV></TD>
    <TD class=3Dmodtr width=3D7>&nbsp;</TD></TR></TBODY></TABLE>
<DIV class=3Dmodbox id=3Dm_blog>
<DIV class=3Dtit>USACO 2.4.4 Bessie Come Home =CC=E2=BD=E2</DIV>
<DIV class=3Ddate>2008=C4=EA01=D4=C230=C8=D5 =D0=C7=C6=DA=C8=FD =
21:58</DIV>
<TABLE style=3D"TABLE-LAYOUT: fixed">
  <TBODY>
  <TR>
    <TD>
      <DIV class=3Dcnt>
      <H2>USACO 2.4.4 Bessie Come Home</H2>
      <DIV class=3Dt_msgfont>Bessie Come Home<BR>Kolstad &amp; Burch =
<BR>It's=20
      dinner time, and the cows are out in their separate pastures. =
Farmer John=20
      rings the bell so they will start walking to the barn. Your job is =
to=20
      figure out which one cow gets to the barn first (the supplied test =
data=20
      will always have exactly one fastest cow). <BR><BR>Between =
milkings, each=20
      cow is located in her own pasture, though some pastures have no =
cows in=20
      them. Each pasture is connected by a path to one or more other =
pastures=20
      (potentially including itself). Sometimes, two (potentially =
self-same)=20
      pastures are connected by more than one path. One or more of the =
pastures=20
      has a path to the barn. Thus, all cows have a path to the barn and =
they=20
      always know the shortest path. Of course, cows can go either =
direction on=20
      a path and they all walk at the same speed. <BR><BR>The pastures =
are=20
      labeled `a'..`z' and `A'..`Y'. One cow is in each pasture labeled =
with a=20
      capital letter. No cow is in a pasture labeled with a lower case =
letter.=20
      The barn's label is `Z'; no cows are in the barn, though. =
<BR><BR>PROGRAM=20
      NAME: comehome<BR>INPUT FORMAT<BR>Line 1:&nbsp;&nbsp; Integer P (1 =
&lt;=3D P=20
      &lt;=3D 10000) the number of paths that interconnect the pastures =
(and the=20
      barn)&nbsp;&nbsp;<BR>Line 2..P+1:&nbsp;&nbsp; Space separated, two =
letters=20
      and an integer: the names of the interconnected pastures/barn and =
the=20
      distance between them (1 &lt;=3D distance &lt;=3D=20
      1000)&nbsp;&nbsp;<BR><BR>SAMPLE INPUT (file comehome.in) =
<BR>5<BR>A d=20
      6<BR>B d 3<BR>C e 9<BR>d Z 8<BR>e Z 3<BR><BR>OUTPUT FORMAT<BR>A =
single=20
      line containing two items: the capital letter name of the pasture =
of the=20
      cow that arrives first back at the barn, the length of the path =
followed=20
      by that cow. <BR>SAMPLE OUTPUT (file comehome.out)<BR>B=20
      11<BR><BR><BR><BR>Bessie Come =
Home<BR><BR>=BB=D8=BC=D2<BR><BR>Kolstad &amp; Burch=20
      <BR><BR>=D2=EB by tim=20
      =
green<BR><BR>=CF=D6=D4=DA=CA=C7=CD=ED=B2=CD=CA=B1=BC=E4,=B6=F8=C4=B8=C5=A3=
=C3=C7=D4=DA=CD=E2=C3=E6=B7=D6=C9=A2=B5=C4=C4=C1=B3=A1=D6=D0=A1=A3<BR>=C5=
=A9=C3=F1=D4=BC=BA=B2=B0=B4=CF=EC=C1=CB=B5=E7=C1=E5,=CB=F9=D2=D4=CB=FD=C3=
=C7=BF=AA=CA=BC=CF=F2=B9=C8=B2=D6=D7=DF=C8=A5=A1=A3<BR>=C4=E3=B5=C4=B9=A4=
=D7=F7=CA=C7=D2=AA=D6=B8=B3=F6=C4=C4=D6=BB=C4=B8=C5=A3=BB=E1=D7=EE=CF=C8=B5=
=BD=B4=EF=B9=C8=B2=D6(=D4=DA=B8=F8=B3=F6=B5=C4=B2=E2=CA=D4<SPAN=20
      class=3Dt_tag=20
      =
href=3D"tag.php?name=3D%CA%FD%BE%DD">=CA=FD=BE=DD</SPAN>=D6=D0,=D7=DC=BB=E1=
=D3=D0=C7=D2=D6=BB=D3=D0=D2=BB=D6=BB=CB=D9=B6=C8=D7=EE=BF=EC=B5=C4=C4=B8=C5=
=A3)=A1=A3<BR>=D4=DA=BC=B7=C4=CC=B5=C4=CA=B1=BA=F2(=CD=ED=B2=CD=C7=B0),=C3=
=BF=D6=BB=C4=B8=C5=A3=B6=BC=D4=DA=CB=FD=D7=D4=BC=BA=B5=C4=C4=C1=B3=A1=C9=CF=
,=D2=BB=D0=A9=C4=C1=B3=A1=C9=CF=BF=C9=C4=DC=C3=BB=D3=D0=C4=B8=C5=A3=A1=A3=
<BR>=C3=BF=B8=F6=C4=C1=B3=A1=D3=C9=D2=BB=CC=F5=CC=F5=B5=C0=C2=B7=BA=CD=D2=
=BB=B8=F6=BB=F2=B6=E0=B8=F6=C4=C1=B3=A1=C1=AC=BD=D3(=BF=C9=C4=DC=B0=FC=C0=
=A8=D7=D4=BC=BA)=A1=A3<BR>=D3=D0=CA=B1=A3=AC=C1=BD=B8=F6=C4=C1=B3=A1(=BF=C9=
=C4=DC=CA=C7=D7=D4=CE=D2=CF=E0=CD=AC=B5=C4)=D6=AE=BC=E4=BB=E1=D3=D0=B3=AC=
=B9=FD=D2=BB=CC=F5=B5=C0=C2=B7=CF=E0=C1=AC=A1=A3<BR>=D6=C1=C9=D9=D3=D0=D2=
=BB=B8=F6=C4=C1=B3=A1=BA=CD=B9=C8=B2=D6=D6=AE=BC=E4=D3=D0=B5=C0=C2=B7=C1=AC=
=BD=D3=A1=A3<BR>=D2=F2=B4=CB,=CB=F9=D3=D0=B5=C4=C4=B8=C5=A3=D7=EE=BA=F3=B6=
=BC=C4=DC=B5=BD=B4=EF=B9=C8=B2=D6,=B2=A2=C7=D2=C4=B8=C5=A3=D7=DC=CA=C7=D7=
=DF=D7=EE=B6=CC=B5=C4=C2=B7=BE=B6=A1=A3<BR>=B5=B1=C8=BB,=C4=B8=C5=A3=C4=DC=
=CF=F2=D7=C5=C8=CE=D2=E2=D2=BB=B7=BD=CF=F2=C7=B0=BD=F8,=B2=A2=C7=D2=CB=FD=
=C3=C7=D2=D4=CF=E0=CD=AC=B5=C4=CB=D9=B6=C8=C7=B0=BD=F8=A1=A3<BR>=C4=C1=B3=
=A1=B1=BB=B1=EA=BC=C7=CE=AA'a'..'z'=BA=CD'A'..'Y',=D4=DA=D3=C3=B4=F3=D0=B4=
=D7=D6=C4=B8=B1=ED=CA=BE=B5=C4=C4=C1=B3=A1=D6=D0=D3=D0=D2=BB=D6=BB=C4=B8=C5=
=A3,=D0=A1=D0=B4=D7=D6=C4=B8=D6=D0=D4=F2=C3=BB=D3=D0=A1=A3<BR>=B9=C8=B2=D6=
=B5=C4=B1=EA=BC=C7=CA=C7'Z',=D7=A2=D2=E2=C3=BB=D3=D0=C4=B8=C5=A3=D4=DA=B9=
=C8=B2=D6=D6=D0=A1=A3<BR><BR>PROGRAM=20
      NAME: comehome<BR><BR>INPUT FORMAT<BR><BR>=B5=DA 1 =D0=D0: =
=D5=FB=CA=FD P(1&lt;=3D=20
      =
P&lt;=3D10000),=B1=ED=CA=BE=C1=AC=BD=D3=C4=C1=B3=A1(=B9=C8=B2=D6)=B5=C4=B5=
=C0=C2=B7=B5=C4=CA=FD=C4=BF=A1=A3 <BR>=B5=DA 2 ..P+1=D0=D0:&nbsp;&nbsp;=20
      =
=D3=C3=BF=D5=B8=F1=B7=D6=BF=AA=B5=C4=C1=BD=B8=F6=D7=D6=C4=B8=BA=CD=D2=BB=B8=
=F6=D5=FB=CA=FD:<BR>=B1=BB=B5=C0=C2=B7=C1=AC=BD=D3=C4=C1=B3=A1=B5=C4=B1=EA=
=BC=C7=BA=CD=B5=C0=C2=B7=B5=C4=B3=A4=B6=C8(1&lt;=3D=B3=A4=B6=C8&lt;=3D100=
0)=A1=A3 <BR><BR>SAMPLE=20
      INPUT (file comehome.in) <BR><BR>5<BR>A d 6<BR>B d 3<BR>C e 9<BR>d =
Z=20
      8<BR>e Z 3<BR><BR>OUTPUT=20
      =
FORMAT<BR><BR>=B5=A5=B6=C0=B5=C4=D2=BB=D0=D0=B0=FC=BA=AC=B6=FE=B8=F6=CF=EE=
=C4=BF:<BR>=D7=EE=CF=C8=B5=BD=B4=EF=B9=C8=B2=D6=B5=C4=C4=B8=C5=A3=CB=F9=D4=
=DA=B5=C4=C4=C1=B3=A1=B5=C4=B1=EA=BC=C7,=BA=CD=D5=E2=D6=BB=C4=B8=C5=A3=D7=
=DF=B9=FD=B5=C4=C2=B7=BE=B6=B5=C4=B3=A4=B6=C8=A1=A3<BR><BR>SAMPLE=20
      OUTPUT (file comehome.out)<BR><BR>B 11</DIV>
      <P></P>
      <HR>

      <P></P>
      <P>USACO 2.4.4 Bessie Come =
Home<BR>=CC=E1=BD=BB=B4=CE=CA=FD:1=B4=CE</P>
      =
<P>dijkstra=C7=F3=D7=EE=B6=CC=C2=B7.=CE=D2=D3=D0=B8=F6=CE=CA=CC=E2=B6=D4=D3=
=DA=C2=B7=BE=B6=B3=F5=CA=BC=BB=AF=CA=C7=C9=E8=CE=AAmaxint=BA=F3=C3=E6=D6=B1=
=BD=D3=D3=C3=BF=EC=BB=B9=CA=C7=C9=E8=CE=AA-1,=BA=F3=C3=E6=C5=D0=B6=CF=C6=E4=
&gt;=3D0=BF=EC=C4=D8,=C2=B7=B9=FD=B5=C4=B8=E6=CB=DF=CE=D2=CF=C2,=D0=BB=D0=
=BB.</P>
      <P><STRONG>{<BR>TASK:comehome<BR>LANG:PASCAL<BR>}<BR>program=20
      comehome;<BR>const maxn=3D52;<BR>var<BR>&nbsp;&nbsp;&nbsp;=20
      map:array[1..maxn,1..maxn] of longint;<BR>&nbsp;&nbsp;&nbsp;=20
      visit:array[1..maxn] of boolean;<BR>&nbsp;&nbsp;&nbsp; =
dis:array[1..maxn]=20
      of longint;<BR>&nbsp;&nbsp;&nbsp; p:integer;<BR>procedure=20
      init;<BR>var<BR>&nbsp;&nbsp;&nbsp;=20
      i,j,x,v1,v2:integer;<BR>&nbsp;&nbsp;&nbsp;=20
      ch1,ch2,s:char;<BR>begin<BR>&nbsp;&nbsp;&nbsp;=20
      assign(input,'comehome.in');reset(input);<BR>&nbsp;&nbsp;&nbsp;=20
      readln(p);<BR>&nbsp;&nbsp;&nbsp; for i:=3D1 to maxn=20
      do<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for j:=3D1 to =
maxn=20
      =
do<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =

      map[i,j]:=3Dmaxint;<BR>&nbsp;&nbsp;&nbsp; for i:=3D1 to p=20
      do<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;=20
      =
readln(ch1,s,ch2,x);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;=20
      if ch1 in ['A'..'Z'] then=20
      =
v1:=3Dord(ch1)-64;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;=20
      if ch1 in ['a'..'z'] then=20
      =
v1:=3Dord(ch1)-70;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;=20
      if ch2 in ['A'..'Z'] then=20
      =
v2:=3Dord(ch2)-64;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;=20
      if ch2 in ['a'..'z'] then=20
      =
v2:=3Dord(ch2)-70;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;=20
      if x&lt;map[v1,v2]=20
      =
then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
map[v1,v2]:=3Dx;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
map[v2,v1]:=3Dx;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      end;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      end;<BR>&nbsp;&nbsp;&nbsp; close(input);<BR>end;<BR>procedure=20
      dijkstra(v0:integer);<BR>var<BR>&nbsp;&nbsp;&nbsp;=20
      i,min,u:integer;<BR>begin<BR>&nbsp;&nbsp;&nbsp; {for i:=3D1 to =
maxn=20
      do<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for j:=3D1 to =
maxn=20
      =
do<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =

      if map[i,j]&lt;&gt;maxint=20
      =
then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;=20
      writeln(i,' ',j,' ',map[i,j]); }<BR>&nbsp;&nbsp;&nbsp; for i:=3D1 =
to maxn=20
      do<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      dis[i]:=3Dmap[i,v0];<BR>&nbsp;&nbsp;&nbsp;=20
      visit[v0]:=3Dtrue;<BR>&nbsp;&nbsp;&nbsp;=20
      repeat<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      min:=3Dmaxint;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      u:=3D0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i:=3D1 =
to maxn=20
      =
do<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =

      if not visit[i] and (dis[i]&lt;min)=20
      =
then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
u:=3Di;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
min:=3Ddis[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      end;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if u&lt;&gt;0=20
      =
then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;=20
      =
begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
visit[u]:=3Dtrue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      for i:=3D1 to maxn=20
      =
do<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      if not visit[i] and (dis[u]+map[u,i]&lt;dis[i])=20
      =
then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
=20
      =
dis[i]:=3Ddis[u]+map[u,i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;=20
      end;<BR>&nbsp;&nbsp;&nbsp; until u=3D0;<BR>end;<BR>procedure=20
      work;<BR>var<BR>&nbsp;&nbsp;&nbsp;=20
      i,min,u:integer;<BR>begin<BR>&nbsp;&nbsp;&nbsp;=20
      =
assign(output,'comehome.out');rewrite(output);<BR>&nbsp;&nbsp;&nbsp;=20
      min:=3Dmaxint;<BR>&nbsp;&nbsp;&nbsp; u:=3D0;<BR>&nbsp;&nbsp;&nbsp; =

      dijkstra(26);<BR>&nbsp;&nbsp;&nbsp; for i:=3D1 to 25=20
      do<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if min&gt;dis[i]=20
      =
then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;=20
      =
begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
min:=3Ddis[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
      =
u:=3Di;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;=20
      end;<BR>&nbsp;&nbsp;&nbsp; writeln(chr(u+64),'=20
      ',min);<BR>&nbsp;&nbsp;&nbsp;=20
      close(output);<BR>end;<BR>begin<BR>&nbsp;&nbsp;&nbsp;=20
      init;<BR>&nbsp;&nbsp;&nbsp; work;<BR>end.</STRONG></P>
      =
<P><STRONG>=B6=D4=B1=C8=D2=D4=C7=B0=D7=F6=D5=E2=CC=E2=CA=B1,=BD=F8=B2=BD=C1=
=CB=B2=BB=C9=D9...</STRONG></P>
      <P><A=20
      =
href=3D"http://hi.baidu.com/leokan/blog/item/8b9ec2fc781d0581b901a0a2.htm=
l"><STRONG>=D2=D4=C7=B0=B5=C4=CC=FB=D7=D3:http://hi.baidu.com/leokan/blog=
/item/8b9ec2fc781d0581b901a0a2.html</STRONG></A></P>
      <P><FONT color=3D#008080=20
      =
size=3D2><STRONG>=D5=E2=B8=F6=CE=CA=CC=E2=CA=C7=C7=F3=C8=CE=D2=E2=B5=E3=D6=
=AE=BC=E4=B5=C4=D7=EE=B6=CC=C2=B7=BE=B6=CE=CA=CC=E2=A3=AC=BB=B0=CB=B5=CE=D2=
=D3=D6=D3=D0=B5=E3=D7=F7=B1=D7=CF=D3=D2=C9=A3=AC=D2=BB=BF=B4=B5=BD=CC=E2=C4=
=BF=A3=AC=C1=A2=BF=CC=B7=AD=BF=AA=D2=B1=BD=F0=B4=F3=D1=A7=B3=F6=B0=E6=C9=E7=
=B5=C4=A1=B6=CB=E3=B7=A8=C9=E8=BC=C6=D3=EB=B7=D6=CE=F6=A1=B7=A3=AC=D4=D9=B4=
=CE=D1=D0=BE=BF=C1=CB=D7=EE=B6=CC=C2=B7=BE=B6=CF=E0=B9=D8=B5=C4=C4=DA=C8=DD=
=A3=AC=B7=A2=CF=D6=D3=D0=D2=BB=D6=D6=B1=C8=B6=E0=B4=CE=D1=AD=BB=B7=CA=B9=D3=
=C3Dijkstra=B8=FC=BA=C3=B5=C4=B7=BD=B7=A8=A3=AC=B6=F8=C7=D2=B8=F8=CE=D2=C2=
=E8=D2=A7=B6=A8=CA=C7=D7=EE=BA=C3=B5=C4=C7=F3=D7=EE=B6=CC=C2=B7=BE=B6=B5=C4=
=B7=BD=B7=A8Floyd=CB=E3=B7=A8=A3=A8=BA=B9~=A6=A8(n^3))=A3=AC=B5=AB=CD=A8=B9=
=FD=BF=B4=C1=CB=CA=E9=C9=CF=B6=E0=D6=D6=CB=E3=B7=A8Warshall=A3=ACBellman-=
Ford=A3=AC=D6=AE=BA=F3=B7=A2=CF=D6=A3=AC=D5=E2=B5=C4=C8=B7=CA=C7=B1=C8=BD=
=CF=BA=C3=B5=C4=CB=E3=B7=A8=A1=A3</STRONG></FONT></P>
      <P><FONT color=3D#008080=20
      =
size=3D2><STRONG>=D3=DA=CA=C7=C7=F3=CE=D2=C2=E8=B0=EF=CE=D2=C9=CF=C1=CB=D2=
=BB=CC=C3=BF=CE=A3=AC=B6=D4Floyd=B5=C4=C0=ED=BD=E2=BC=D3=C9=EE=C1=CB=B2=BB=
=C9=D9=A1=A3</STRONG></FONT></P>
      <P><FONT color=3D#008080=20
      =
size=3D2><STRONG>Floyd=CB=E3=B7=A8=CA=C7=C0=FB=D3=C3=C1=CB=BE=E0=C0=EB=BE=
=D8=D5=F3=B5=FC=B4=FA=D4=CB=CB=E3=C0=FB=D3=C3=C3=BF=D2=BB=B4=CE=B5=FC=B4=FA=
=C0=B4=B8=C4=B1=E4=C4=B3=D2=BB=B8=F6=B5=E3=B5=C4=B5=BD=C6=F0=CA=BC=B5=E3=B5=
=C4=D7=EE=B6=CC=C2=B7=BE=B6=A3=AC=BE=AD=B9=FDn=B4=CE=B5=FC=B4=FA=BA=F3=A3=
=AC=CB=F9=D3=D0=B5=E3=B6=BC=CA=C7=D7=EE=B6=CC=C2=B7=BE=B6=A3=AC=BE=CDok=C1=
=CB</STRONG></FONT></P>
      <P><FONT color=3D#008080 size=3D2><STRONG>&nbsp;&nbsp; a b c =
d<BR>a 0 =A1=DE 3=20
      =A1=DE<BR>b 2 0 =A1=DE =A1=DE<BR>c =A1=DE 7 0 1<BR>d 6 =A1=DE =
=A1=DE 0</STRONG></FONT></P>
      <P><FONT color=3D#008080 =
size=3D2><STRONG>=D5=E2=CA=C7=B3=F5=CA=BC=B5=C4=BE=D8=D5=F3</STRONG></FON=
T></P>
      <P><FONT color=3D#008080 =
size=3D2><STRONG>=BE=AD=B9=FD=D2=BB=B4=CE=B5=FC=B4=FA</STRONG></FONT></P>=

      <P><FONT color=3D#008080 size=3D2><STRONG>&nbsp;&nbsp; a b c =
d<BR>a 0 =A1=DE 3=20
      =A1=DE<BR>b 2 0 5 =A1=DE<BR>c =A1=DE 7 0 1<BR>d 6 =A1=DE 9 =
0</STRONG></FONT></P>
      <P><FONT color=3D#008080=20
      =
size=3D2><STRONG>=BF=C9=D2=D4=BF=B4=B5=BDcb=BA=CDcd=B6=BC=B8=C4=B1=E4=C1=CB=
<BR>=C8=E7=B4=CB=D2=BB=B4=CE=B4=CE=D1=AD=BB=B7=B5=C3=B3=F6=C3=BF=B8=F6=B5=
=E3=B5=C4=D7=EE=B6=CC=C2=B7=BE=B6<BR>[ANALYSIS]=D6=D0=B5=C4Floyd=CB=E3=B7=
=A8:</STRONG></FONT></P>
      <P><FONT color=3D#008080 size=3D2><STRONG>&nbsp;&nbsp;&nbsp; =
for(k=3D0; k&lt;52;=20
      k++)<BR>&nbsp;&nbsp;&nbsp; for(i=3D0; i&lt;52; =
i++)<BR>&nbsp;&nbsp;&nbsp;=20
      for(j=3D0; j&lt;52; j++)<BR>if(dist[i][k]+dist[k][j] &lt;=20
      dist[i][j])<BR>&nbsp;&nbsp;&nbsp;&nbsp; dist[i][j] =3D=20
      dist[i][k]+dist[k][j];</STRONG></FONT></P>
      <P><FONT color=3D#008080=20
      =
size=3D2><STRONG>=B6=D4=B1=C8=B1=EA=D7=BC=B4=F0=B0=B8=BA=F3=B7=A2=CF=D6=A3=
=AC=CE=D2=B5=C4=B3=CC=D0=F2=BA=CD=B1=EA=D7=BC=B5=C4=B2=EE=B2=BB=B6=E0=A3=AC=
=B2=BB=B9=FD=B2=BB=C4=DC=CB=B5=BD=F8=B2=BD=A3=AC=D2=F2=CE=AA=CE=D2=CA=C7=B2=
=CE=BF=BC=D7=C5=D2=B1=BD=F0=B4=F3=D1=A7=B3=F6=B0=E6=C9=E7=B5=C4=A1=B6=CB=E3=
=B7=A8=C9=E8=BC=C6=D3=EB=B7=D6=CE=F6=A1=B7=D7=F6=B5=C4......</STRONG></FO=
NT></P>
      <P><FONT color=3D#008080=20
      =
size=3D2><STRONG>PS.=B4=CB=CC=E2=D3=D6=D4=DA=CA=E4=C8=EB=B7=BD=C3=E6=B3=F6=
=C1=CB=B5=E3=CE=CA=CC=E2=A3=AC=CE=D2=D3=C9=D3=DA=D3=C3char=B6=C1=C8=EB=C4=
=C1=B3=A1=BA=C5=A3=AC=C3=BB=C1=F4=D2=E2=BF=D5=B8=F1=A3=A8string=D3=C3=B9=DF=
=A3=A9=A3=AC=B5=BC=D6=C2=B4=F0=B0=B8=B4=ED=CE=F3=C1=CB=BA=C3=B6=E0=B4=CE=A1=
=A3</STRONG></FONT></P>
      <P><FONT color=3D#008080=20
      =
size=3D2><STRONG>PPS.=B7=A2=CF=D6=D2=B1=BD=F0=B4=F3=D1=A7=B3=F6=B0=E6=C9=E7=
=B5=C4=A1=B6=CB=E3=B7=A8=C9=E8=BC=C6=D3=EB=B7=D6=CE=F6=A1=B7=BA=DC=BA=C3=D3=
=C3=A3=AC=BA=DC=B6=E0=CE=CA=CC=E2=B6=BC=BF=C9=D2=D4=B2=CE=BF=BC=CB=FC=B5=C4=
=CB=BC=C2=B7=A1=A3</STRONG></FONT></P>
      <P><FONT color=3D#008080=20
      =
size=3D2><STRONG>PPPS.=B9=D8=D3=DAFloyd=D5=E2=C0=EF=CB=B5=B5=C4=B2=BB=CA=C7=
=BA=DC=C7=E5=B3=FE=A3=AC=D3=D0=D0=CB=C8=A4=B5=C4=CD=AC=D1=A7=BF=C9=D2=D4=CE=
=CA=CE=D2=BD=E8=D2=B1=BD=F0=B4=F3=D1=A7=B3=F6=B0=E6=C9=E7=B5=C4=A1=B6=CB=E3=
=B7=A8=C9=E8=BC=C6=D3=EB=B7=D6=CE=F6=A1=B7=BF=B4=A1=A3=A3=A8=B2=BB=B9=FD=D5=
=E2=B6=AB=CE=F7=B4=F3=BC=D2=B6=BC=BB=E1=B5=C4=B0=C9=A1=A3=A1=A3=A1=A3=A3=A9=
</STRONG></FONT></P>
      <P><FONT color=3D#008080=20
      =
size=3D2><STRONG>PPPPS=A3=AC=B7=A2=CF=D6=CA=FD=D1=A7=BA=CD=BC=C6=CB=E3=BB=
=FA=CB=E3=B7=A8=D3=D0=BA=DC=B4=F3=C1=AA=CF=B5=A3=AC=CE=D2=C2=E8=BE=B9=C8=BB=
=B6=AE=C4=C7=C3=B4=B6=E0=CB=E3=B7=A8......</STRONG></FONT></P><STRONG>
      <HR>
      </STRONG>
      <P><STRONG>USACO=B5=C4=B7=D6=CE=F6</STRONG></P>
      <P><STRONG>We use the Floyd-Warshall all pairs shortest path =
algorithm to=20
      calculate the minimum distance between the barn and all other =
points in=20
      the pasture. Then we scan through all the cow-containing pastures =
looking=20
      for the minimum distance. </STRONG></P><PRE><STRONG>#include =
&lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;assert.h&gt;
#include &lt;ctype.h&gt;

#define INF 60000 /* bigger than longest possible path */

int dist[52][52];

int
char2num(char c)
{
    assert(isalpha(c));

    if(isupper(c))
 return c-'A';
    else
 return c-'a'+26;
}

void
main(void)
{
    FILE *fin, *fout;
    int i, j, k, npath, d;
    char a, b;
    int m;

    fin =3D fopen("comehome.in", "r");
    fout =3D fopen("comehome.out", "w");
    assert(fin !=3D NULL &amp;&amp; fout !=3D NULL);

    for(i=3D0; i&lt;52; i++)
    for(j=3D0; j&lt;52; j++)
 dist[i][j] =3D INF;

    for(i=3D0; i&lt;26; i++)
 dist[i][i] =3D 0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -