EduBrick

C. Проверка топологической сортировки

2000 мс · 256 МБ · всё или ничего

Дан ориентированный граф и перестановка его вершин. Проверьте, является ли перестановка топологической сортировкой: для каждого ребра u→vu \to v вершина uu должна стоять в перестановке раньше vv.

Строить сортировку для этого не нужно. Запишите для каждой вершины её позицию в перестановке и проверьте все рёбра — это O(n+m)O(n + m).

Обратите внимание: граф не обещан ациклическим. Если в нём есть цикл, ни одна перестановка сортировкой не будет, и код это заметит сам — какое-то ребро окажется направленным назад.

Формат ввода

Первая строка содержит числа nn и mm (1≤n,m≤1051 \le n, m \le 10^5).

Далее идут mm строк с рёбрами ui→viu_i \to v_i. В последней строке — перестановка из nn чисел.

Формат вывода

Одно слово: YES или NO.

Примеры

ввод
3 3
2 3
1 3
1 2
2 1 3
вывод
NO
ввод
3 3
3 2
1 2
3 1
3 1 2
вывод
YES
Войдите, чтобы отправлять решения.