Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Project2;
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- const
- MAXIN = 10000;
- var
- i, j, n, m, top, a, b, k, ans: integer;
- head, next, list, c: array [0..MAXIN] of integer;
- used: array [0..MAXIN] of boolean;
- procedure clean();
- var
- i: integer;
- begin
- for i := 0 to MAXIN do
- begin
- list[i] := 0;
- head[i] := 0;
- next[i] := 0;
- used[i] := false;
- end;
- end;
- procedure push(a, b: integer);
- begin
- inc(top);
- list[top] := b;
- next[top] := head[a];
- head[a] := top;
- end;
- procedure rec(a: integer);
- var
- i: integer;
- bol: boolean;
- begin
- if (used[b]) then
- begin
- bol := true;
- for i := 1 to k do
- bol := bol and (used[c[i]]);
- if bol then
- inc(ans);
- exit;
- end;
- i := head[a];
- while (list[i] <> 0) do
- begin
- if not(used[list[i]]) then
- begin
- used[list[i]] := true;
- rec(list[i]);
- used[list[i]] := false;
- end;
- i := next[i];
- end;
- end;
- begin
- readln(n, m);
- clean();
- ans := 0;
- top := 0;
- for i := 1 to m do
- begin
- readln(a, b);
- push(a, b);
- end;
- readln(a, b, k);
- for i := 1 to k do
- readln(c[i]);
- used[a] := true;
- rec(a);
- writeln(ans);
- readln;
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment