比赛 暑假培训五 评测结果
题目名称 找最佳通路 最终得分 0
用户昵称 EnAsn 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2008-07-22 11:11:57
显示代码纯文本
program ex;
type
 ss=array[1..50,1..50]of integer;
 sz=array[1..50]of integer;
 pd=array[1..50]of boolean;
var
 a:ss;
 flag:pd;
 cost:sz;
 f1,f2:text;
 i,j,k,min:integer;
 n,m,s,e:integer;
procedure init;
 var
  i,j:integer;
  h,t:integer;
 begin
  assign(f1,'city.in');
  assign(f2,'city.out');
  reset(f1);
  rewrite(f2);
  readln(f1,n,m,s,e);
  for i:=1 to n do
   for j:=1 to n do
    a[i,j]:=99;
  for i:=1 to m do
   begin
    readln(f1,h,t);
    a[h,t]:=1;
   end;
   for i:=1 to n do
    begin
     cost[i]:=a[s,i];
     flag[i]:=false;
    end;
 end;
begin
 init;
 for k:=1 to n do
  begin
    min:=99;j:=0;
    for i:=1 to n do
      if (cost[i]<min)and(flag[i]=false) then
        begin
          min:=cost[i];
          j:=i;
        end;
    flag[j]:=true;
    for i:=1 to n do
     if (cost[i]>cost[j]+a[j,i])
         and(flag[i]=false)
      then
        cost[i]:=cost[j]+a[j,i];
  end;
 writeln(f2,cost[e]+1);
 close(f1);
 close(f2);
end.