40 lines
939 B
ObjectPascal
40 lines
939 B
ObjectPascal
Program p5_1(Input, Output);
|
|
Type point = Record
|
|
x, y : integer
|
|
End;
|
|
Var g:Array[1..100,1..100] Of Real;
|
|
pos:Array[1..100] Of point;
|
|
n,m,x,y,i,j,k,s,t:integer;
|
|
|
|
Function dist(i,j:Integer):Real;
|
|
Begin
|
|
dist:=sqrt(sqr(pos[i].x - pos[j].x) + sqr(pos[i].y - pos[j].y))
|
|
End;
|
|
|
|
Begin {main}
|
|
Assign(Input, 'short.in');Reset(Input);
|
|
Assign(Output, 'short.out');Rewrite(Output);
|
|
Readln(n);
|
|
For i := 1 To n Do
|
|
Readln(pos[i].x, pos[i].y);
|
|
For i := 1 To n Do
|
|
For j := 1 To n Do
|
|
g[i,j] := 1e30;
|
|
Readln(m);
|
|
For i := 1 To m Do
|
|
Begin
|
|
Readln(x, y);
|
|
g[x,y] := dist(x, y);
|
|
g[y,x] := g[x,y]
|
|
End;
|
|
Readln(s, t);
|
|
For k := 1 To n Do
|
|
For i := 1 To n Do
|
|
If i <> k Then
|
|
For j := 1 To n Do
|
|
If (i<>j) And (k<>j) And (g[i,k]+g[k,j]<g[i,j])
|
|
Then g[i,j]:=g[i,k] + g[k,j];
|
|
Writeln(g[s,t]:0:2);
|
|
Close(Input);Close(Output);
|
|
End.
|