Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var
- i,n,m,cnt,x,y,s,f : longint;
- v,pred : array [1..100000] of longint;
- u : array [1..1000] of longint;
- function bfs(x,f : longint) : longint;
- var
- qb,qe,sn : longint;
- q : array [1..10000,1..2] of longint;
- was : array [1..1000] of boolean;
- begin
- fillchar(was,sizeof(was),false);
- fillchar(q,sizeof(q),0);
- qb:=1;
- qe:=0;
- inc(qe);
- q[qe,1]:=x;
- q[qe,2]:=0;
- was[x]:=true;
- while (qe>=qb) do begin
- x:=q[qb,1];
- sn:=q[qb,2];
- inc(qb);
- inc(sn);
- x:=u[x];
- while (x<>0) do begin
- if (not was[v[x]])
- then begin
- if (v[x]=f)
- then begin
- bfs:=sn;
- exit;
- end;
- inc(qe);
- q[qe,1]:=v[x];
- q[qe,2]:=sn;
- was[v[x]]:=true;
- end;
- x:=pred[x];
- end;
- end
- end;
- procedure add(x,y : longint);
- begin
- inc(cnt);
- v[cnt]:=y;
- pred[cnt]:=u[x];
- u[x]:=cnt;
- end;
- begin
- assign(input,'input.txt'); reset(input);
- assign(output,'output.txt'); rewrite(output);
- readln(n,m);
- for i:=1 to m do begin
- readln(x,y);
- add(x,y);
- add(y,x);
- end;
- readln(s,f);
- writeln(bfs(s,f));
- close(input); close(output);
- end.
Add Comment
Please, Sign In to add comment