Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Var
- n, s, fin, min: longint;
- i, j: longint;
- linkToV: longint;
- adT: array[1..100] of array[1..100] of longint;
- mT, p: array[1..100] of int64;
- f: array[1..100] of boolean;
- Begin
- Assign(input, 'input.txt'); Reset(input);
- //INPUT
- Readln(n, s, fin);
- for i:= 1 to n do
- for j:=1 to n do
- Read(adT[i,j]);
- if (s = fin) then Writeln(0) else
- begin
- for i:=1 to n do
- adT[i,i]:= 0;
- for i:= 1 to n do
- for j:=1 to n do
- begin
- if (adT[i,j] < 0) then adT[i,j]:= maxlongint div 2;
- end;
- //INPUT
- //P ARRAY CONFIG
- for i:=1 to n do
- p[i]:= s;
- p[s]:= 0;
- //P ARRAY CONFIG
- //F ARRAY CONFIG
- for i:=1 to n do
- f[i]:= false;
- f[s]:= true;
- //F ARRAY CONFIG
- //mT TABLE CONFIG
- for i:=1 to n do
- mT[i]:= adT[s,i];
- //mT TABLE CONFIG
- //MainCycle
- for i:=1 to n do begin
- {for j:=1 to n do
- Write(f[j], ' ');
- Writeln;}
- //Link To V and min Select
- min:= maxlongint div 2;
- for j:=1 to n do
- if (f[j] = false) and (mT[j] < min) then
- begin
- min:= mT[j];
- linkToV:= j;
- end;
- //Link To V and min Select
- f[linkToV]:= true;
- //Configure mT Table
- for j:=1 to n do
- if (f[j] = false) and (mT[linkToV] + adT[linkToV, j] < mT[j]) then
- begin
- mT[j]:= (mT[linkToV] + adT[linkToV, j]);
- p[j]:= linkToV;
- end;
- //Configure mT Table
- end;
- //MainCicle
- if (mT[fin] = maxlongint div 2) then Writeln(-1) else Writeln(mT[fin])
- end;
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement