12139. Найсильніший програміст
Існує \(N\) конкурентоспроможних програмістів, пронумерованих \(1,2, … N\). Між програмістами існує зв’язок, який називається перевагою. Для всіх пар різних програмістів (\(X\), \(Y\)) виконується точно одне з наступних двох співвідношень: «особа \(X\) сильніша за \(Y\)» або «особа \(Y\) сильніша за \(X\)».
Зверхність перехідна. Іншими словами, для всіх трійок різних програмістів \((X, Y, Z)\) вважається, що:
- якщо особа \(X\) сильніша за \(Y\), а особа \(Y\) сильніша за \(Z\), то особа X сильніша за \(Z\)
Людина \(X\) вважається найсильнішим програмістом, якщо \(X\) сильніша за \(Y\) для всіх людей \(Y\), окрім особи \(X\). (З урахуванням наведених вище обмежень ми можемо довести, що завжди існує рівно одна така особа.)
Ви маєте \(M\) відомості про їх перевагу. \(І\)-та з них полягає в тому, що «особа \(A_i\) сильніша за особу \(B_i\) ».
Чи можете ви визначити найсильнішого програміста серед \(N\) на основі інформації? Якщо можете, виведіть номер цієї людини. В іншому випадку, тобто якщо є кілька можливих найсильніших програмістів, виведіть -1.
Обмеження
- Існує принаймні один спосіб визначення переваг для всіх пар різних програмістів, який узгоджується з наданою інформацією.
Формат вхідних даних
Перший рядок містить цілі числа \(N,M\).
Наступні \(M\) рядків містять цілі числа \(A_i, B_i\).
Формат вихідних даних
У вихідний потік виведіть відповідь.
Приклад вхідних даних
3 2
1 2
2 3
Приклад вихідних даних
1
У вас є дві інформації: «1 сильніша за 2» і «2 сильніша за 3». За транзитивністю ви також можете зробити висновок, що «особа 1 сильніша за особу 3», отже, особа 1 є найсильнішим програмістом.
Приклад вхідних даних
3 2
1 3
2 3
Приклад вихідних даних
-1
Приклад вхідних даних
6 6
1 6
6 5
6 2
2 3
4 3
4 2
Приклад вихідних даних
-1
Коментарі