Skip to content

간식 분배

UnratedSpecial judge
한국어

Language

Contribute a translation
Time limit
1500 ms
Memory limit
1024 MB
Submissions
0
Correct
0
Solved by
0
AC rate

Statement

$N$명의 학생과 $N$개의 간식이 있다. 학생들과 간식에는 각각 $1, 2, \cdots, N$의 번호가 붙어 있다.

각 학생은 $N$개의 간식 중 하나 이상의 간식을 좋아한다. 보다 구체적으로, $i$ $(1 \le i \le N)$번 학생은 $C_i$개의 간식을 좋아하며, 그 간식들의 번호는 $A_{i, 1}, A_{i, 2}, \cdots, A_{i, C_i}$이다.

처음에 방 안에는 $N$종류의 간식이 정확히 하나씩 놓여 있다. 다음과 같은 과정을 통해 학생들에게 간식을 분배하려고 한다.

  • $N$명의 학생을 적절한 순서로 한 번에 한 명씩 방에 들여보낸다.
  • 방에 들어간 학생은 현재 방에 남아있는 간식 중 자신이 좋아하는 모든 간식을 가져간다. 만약, 방 안에 자신이 좋아하는 간식이 하나도 없다면, 아무 간식도 가져가지 않는다.

$N$명의 학생이 방에 들어가는 순서를 적절히 정하여, 모든 학생이 정확히 하나의 간식을 가져가도록 하는 것이 가능한지 판별하라. 만약 가능하다면, 그러한 순서를 아무거나 하나 구하라.

Constraints

  • 주어지는 모든 수는 정수이다.
  • $1 \le N \le 200\,000$
  • 정수 $i$ $(1 \le i \le N)$에 대하여 $1 \le C_i \le N$
  • $C_1 + C_2 + \cdots + C_N \le 500\,000$
  • 정수 $i$ $(1 \le i \le N)$와 정수 $j$ $(1 \le j \le C_i)$에 대하여 $1 \le A_{i, j} \le N$
  • 정수 $i$ $(1 \le i \le N)$에 대하여, $C_i$개의 정수 $A_{i, 1}, A_{i, 2}, \cdots, A_{i, C_i}$의 값은 모두 서로 다르다.

Subtasks

  1. (6점) 정수 $i$ $(1 \le i \le N)$에 대하여 $C_i = 1$
  2. (11점) 모든 학생이 정확히 하나의 간식을 가져가도록 하는 순서가 존재한다면, $1, 2, \cdots, N$의 번호 순서도 그러한 조건을 만족한다.
  3. (8점) $N \le 5$
  4. (12점) $N \le 18$
  5. (18점) $N \le 300$
  6. (20점) $N \le 5\,000$
  7. (25점) 추가 제약 조건 없음.

Input

첫 줄에 학생과 간식의 수를 나타내는 정수 $N$이 주어진다.

그다음 $N$개의 줄에 걸쳐, $N$명의 학생이 좋아하는 간식에 대한 정보가 주어진다. 이 중 $i$ $(1 \le i \le N)$번째 줄에는 정수 $C_i$와 그 뒤에 $C_i$개의 정수 $A_{i, 1}, A_{i, 2}, \cdots, A_{i, C_i}$가 공백으로 구분되어 차례대로 주어진다.

Output

만약, 모든 학생이 정확히 하나의 간식을 가져가도록 하는 순서가 존재하지 않는다면, 첫 줄에 -1을 출력한다.

만약, $P_1, P_2, \cdots, P_N$의 번호 순서대로 학생들이 방에 들어갈 때 모든 학생이 정확히 하나의 간식을 가져간다면, 첫 줄에 $N$개의 정수 $P_1, P_2, \cdots, P_N$을 공백으로 구분하여 출력한다.

가능한 출력이 여러 개라면 그중 아무거나 하나를 출력해도 정답으로 인정된다.

Examples

Sample input 1
2
2 1 2
2 1 2
Sample output 1
-1
Sample input 2
4
1 3
1 2
3 4 2 3
2 1 2
Sample output 2
1 2 3 4
Sample input 3
3
2 1 2
2 2 3
1 2
Sample output 3
3 1 2

Tags

No tags yet

Source