[BOJ 8093] Credibility of Witnesses
View as PDFWitnesses, numbered from 1 to n, have made their testimonies in a court. Each testimony is a statement of the form: “the i-th witness agrees with the j-th witness” or “the i-th witness does not agree with the j-th witness”.</p>
If the i-th witness agrees with the j-th witness then he agrees also with all the witnesses that the j-th witness agrees with. Similarly, the i-th witness does not agree with all the witnesses that the j-th witness does not agree with. We assume that every witness implicitly states: “I agree with myself”.
We say that witness A is not credible if from testimonies made in a court it follows that there exists a witness B such that A agrees with B and A does not agree with B.
Write a program that:
- reads the number of witness and their testimonies from the standard input,
- finds all the witnesses that are not credible,
- writes the result to the standard output.
In the first line of the standard input there is a single integer n, 1 ≤ n ≤ 3,000, which is the number of witnesses. In the second line there is a single integer m, 0 ≤ m ≤ 8,000, which is the number of testimonies.
In each of the following m lines there are two integers i, j (1 ≤ i ≤ n, 1 ≤ |j| ≤ n), separated by a single space. If j is positive it describes a testimony: “the i-th witness agrees with the j-th witness”. If j is negative it means: “the i-th witness does not agree with the (-j)-th witness”.
출력 형식
In the standard output there should be written:
- a single word
NIKT(which means “nobody” in Polish), if it follows from testimonies that there is no witness that is not credible, - or — in increasing order — the numbers of witnesses that are not credible (one member in one line).
예제 입력
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
Comments