SOJ ONLINE JUDGE

문제 153

조건이 참이면

내 상태
미제출
난이도
153번 문제 난이도 보기
Gold II
출제자
rlatjwls7882
시간 제한
5000 ms
메모리 제한
1024 MB
153번 문제 태그 보기
구현

참 또는 거짓인 변수 $N$개와 조건 $M$개가 주어진다. 변수의 번호는 $0$부터 $N-1$까지이다. 각 조건에는 전제에 포함된 변수들의 목록과 결론을 나타내는 정수 $h$가 있다.

전제에 포함된 변수가 모두 참이면 $h$번 변수도 참이어야 한다. 단, $h=-1$이면 전제에 포함된 변수가 모두 참인 경우를 금지한다. 전제 목록이 비어 있으면 전제는 항상 참이다. 전제 목록에는 중복 변수가 있을 수 있다.

모든 조건을 만족하는 배정 중 참인 변수 수가 최소인 배정을 구해 보자. 가능한 배정이 있다면 정답은 유일하다. 정답에서 참인 변수는 모든 가능한 배정에서도 참이다.

입력

첫 번째 줄에 테스트 케이스의 수를 의미하는 정수 $Q$가 주어진다. $(1 \le Q \le 100)$

각 테스트 케이스의 첫 번째 줄에 두 정수 $N$, $M$이 공백으로 구분되어 주어진다. $(1 \le N \le 30\,000; 0 \le M \le 200\,000)$

두 번째 줄부터 $M$개의 줄에 걸쳐 전제 목록의 길이를 의미하는 정수 $k$, 정수 $h$와 전제의 변수 번호 $a_1, a_2, \cdots, a_k$가 공백으로 구분되어 주어진다. $(0 \le k \le 200\,000; -1 \le h < N; 0 \le a_i < N)$

전체 테스트 케이스에서 $N$의 합은 $200\,000$ 이하이고 $M$의 합은 $300\,000$ 이하이며 $k$의 합은 $10^6$ 이하이다.

출력

각 테스트 케이스마다 조건을 만족하는 배정이 없다면 $-1$을 한 줄에 출력한다. 그렇지 않다면 참인 변수의 수가 최소인 배정을 $0$번부터 $N-1$번 변수의 순서대로 공백으로 구분하여 한 줄에 출력한다. 거짓은 $0$, 참은 $1$로 출력한다.

예제 입력 1

3
5 6
4 1 1 3 0 4
0 4
2 0 1 1
3 0 0 2 3
2 1 3 4
2 1 0 4
2 9
0 0
1 0 1
0 1
2 0 1 0
0 0
3 0 0 1 0
0 1
0 -1
2 1 0 0
6 4
4 5 5 4 3 2
4 0 4 0 1 1
4 2 3 4 4 1
2 3 2 2

예제 출력 1

0 0 0 0 1
-1
0 0 0 0 0 0

제출

편집기에서 나가려면 Esc를 누른 뒤 Tab 또는 Shift와 Tab을 누르세요.