Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Project2;
- {$APPTYPE CONSOLE}
- uses
- SysUtils, Math;
- const
- MAXIN = 1000000;
- type
- time = record
- data, prev, st: integer;
- ans: int64;
- end;
- var
- z, n, m, i, j, x, y, data, ind, free, h, p, last, min1, min2: integer;
- a, mark, s, head, dest, next, ans, ans1: array [0..MAXIN] of integer;
- q: array [0..MAXIN] of time;
- bol: boolean;
- function size(p, last: integer): boolean;
- begin
- size := (p <= last) or (last > p);
- end;
- procedure add(v, u: integer);
- begin
- inc(free);
- dest[free] := u;
- next[free] := head[v];
- head[v] := free;
- end;
- begin
- min2 := MAXINT - 20;
- last := -1;
- free := 0;
- dest[0] := -1;
- readln(n, m);
- for i := 1 to n do
- begin
- next[i] := 0;
- ans[i] := MAXINT - 20;
- read(data);
- a[i] := data;
- if (data <> 0) then
- begin
- inc(last);
- if (last > MAXIN) then
- last := 0;
- q[last].data := i;
- q[last].st := i;
- q[last].ans := 0;
- q[last].prev := 0;
- end;
- end;
- for i := 1 to m do
- begin
- read(x, y);
- add(x, y);
- add(y, x);
- end;
- //______________________________________________________________________________
- p := 0;
- while (size(p, last)) do
- begin
- h := head[q[p].data];
- while (h <> 0) do
- begin
- if (dest[h] <> q[p].prev) then
- if (a[dest[h]] = 0) then // ?????? ???????????
- begin
- inc(last);
- if (last > MAXIN) then
- last := 0;
- q[last].data := dest[h];
- q[last].st := q[p].st;
- q[last].ans := q[p].ans + 1;
- q[last].prev := q[p].data;
- end
- else
- if (a[dest[h]] <> a[q[p].st]) then // ????? ???? ???? ????? ???????????? ????
- ans[dest[h]] := min(ans[dest[h]], q[p].ans + 1);
- h := next[h];
- end;
- inc(p);
- if (p > MAXIN) then
- p := 0;
- end;
- //_________________________________________________________________________
- min2 := ans[1];
- for i := 2 to n do
- if (min2 > ans[i]) then
- min2 := ans[i];
- writeln(min2);
- readln;
- readln;
- end.
- 4 4
- 1 0 2 0
- 1 2
- 2 3
- 3 4
- 4 1
- 2
- 5 4
- 1 0 2 1 0
- 1 5
- 4 5
- 5 2
- 2 3
- 3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement