아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

증인의 신뢰성

시간 제한1초메모리 제한128 MB

요약
증인들 사이의 동의와 비동의 진술이 주어질 때, 어떤 증인과 동의하면서 동시에 동의하지 않게 되는 모순된 증인을 모두 찾는다.
난이도

어려움10점 중 8점

유형
그래프, 유니온 파인드, 위상 정렬
정답자
아직 제출이 없습니다

문제

법정에서 11번부터 nn번까지 번호가 매겨진 증인 nn명이 증언한다. 각 증언은 다음 두 가지 형태 중 하나이다.

  • 증인 ii가 증인 jj에게 동의한다, 또는
  • 증인 ii가 증인 jj에게 동의하지 않는다.

동의는 다른 증인의 견해까지 물려받는다. 즉, 증인 ii가 증인 jj에게 동의하면 다음이 성립한다.

  • 증인 jj가 동의하는 모든 증인에게 증인 ii도 동의한다.
  • 증인 jj가 동의하지 않는 모든 증인에게 증인 ii도 동의하지 않는다.

모든 증인은 항상 자기 자신에게 동의한다.

증언 전체로부터, 증인 AA가 어떤 증인 BB에게 동의하면서 동시에 동의하지 않는다는 것이 유도되면, 증인 AA를 신뢰할 수 없다고 한다.

주어진 모든 증언을 바탕으로 신뢰할 수 없는 증인을 모두 찾아라.

입력

첫째 줄에 증인의 수 nn (1≤n≤30001 \le n \le 3000)이 주어진다. 둘째 줄에 증언의 수 mm (0≤m≤80000 \le m \le 8000)이 주어진다.

이어지는 mm개의 줄에는 각각 두 정수 ii와 jj (1≤i≤n1 \le i \le n, 1≤∣j∣≤n1 \le |j| \le n)가 주어진다. jj가 양수이면 "증인 ii가 증인 jj에게 동의한다"는 뜻이고, jj가 음수이면 "증인 ii가 증인 −j-j에게 동의하지 않는다"는 뜻이다.

출력

다음 중 하나를 출력한다.

  • 신뢰할 수 없는 증인이 한 명도 없으면 "아무도 없음"을 뜻하는 단어 NIKT 한 개를 출력한다.
  • 그렇지 않으면 신뢰할 수 없는 증인의 번호를 오름차순으로 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    6
    12
    1 3
    1 6
    2 -1
    3 4
    4 1
    4 -2
    4 5
    5 -1
    5 -3
    5 2
    6 5
    6 4
    
    예상 출력
    1
    3
    4
    6