2602最短路径问题

来源:互联网 发布:发烧碟推荐知乎 编辑:程序博客网 时间:2024/06/05 07:39
var  n,m,i,a,b,s,t:longint;  x,y:array[1..100] of longint;  w:array[1..100,1..100] of real;  d:array[1..100] of real;  used:array[1..100] of boolean;procedure dijkstra(s:longint);var  i,k,pos:longint;  min:real;begin  fillchar(used,sizeof(used),false);  for i:=1 to n do    d[i]:=w[s,i];  used[s]:=true;  d[s]:=0;  for K:=1 to n-1 do    begin     min:=maxlongint;      fori:=1 to n do       if (not used[i]) and (d[i]         begin          min:=d[i];          pos:=i;         end;     used[pos]:=true;      fori:=1 to n do       if (not used[i]) and (d[i]>d[pos]+w[pos,i])then         d[i]:=d[pos]+w[pos,i];    end;end;begin  fillchar(w,sizeof(w),70);  read(n);  for i:=1 to n do    read(x[i],y[i]);  read(m);  for i:=1 to m do    begin     read(a,b);     w[a,b]:=sqrt((x[a]-x[b])*(x[a]-x[b])+(y[a]-y[b])*(y[a]-y[b]));     w[b,a]:=w[a,b];    end;  read(s,t);  dijkstra(s);  writeln(d[t]:0:2);end.


原创粉丝点击