Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Project2;
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- var
- arr : array[1..100,1..100]of byte;
- used : array [1..100] of boolean;
- q : array [1..100] of integer;
- otvet : array[1..100] of integer;
- p: array [1..100]of integer;
- p1: array [1..100]of integer;
- i, l, r, n, s, f, j, sum, summa : integer;
- procedure BFS(n, s, f : integer);
- begin
- l:=1;
- r:=1;
- q[r]:=s;
- otvet[s] := 0;
- used[s]:=true;
- while l <= r do
- begin
- for i := 1 to n do
- begin
- if (arr[s,i]=1) and (not used[i]) then
- begin
- inc(r);
- q[r] := i;
- used[i] := TRUE;
- otvet[i] := otvet[s]+1;
- p[i]:=s;
- end;
- end;
- inc(l);
- s := q[l];
- end;
- end;
- begin
- reset(input,'path.in');
- rewrite(output,'path.out');
- read(n);
- summa:=0;
- for i := 1 to n do
- begin
- for j := 1 to n do
- begin
- read(arr[i,j]);
- end;
- end;
- read(s,f);
- if s=f then
- begin
- writeln(1);
- write(s,' ',f);
- end;
- for i:=1 to n do
- begin
- used[i]:=false;
- end;
- BFS(n,s,f);
- if used[f]= false then
- begin
- write(-1);
- exit;
- end;
- writeln(otvet[f]);
- p1[1]:=f;
- sum:=f;
- for i:=1 to otvet[f] do
- begin
- p1[i+1]:=p[sum];
- sum:=p[sum];
- end;
- for i:=otvet[f]+1 downto 1 do
- begin
- write(p1[i],' ');
- end;
- readln;
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment