RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
문제 KOI00115

간식 분배

스페셜 저지 — 출력을 사용자 정의 프로그램으로 검사하므로 여러 정답이 인정될 수 있습니다.
설명

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

각 학생은 N개의 간식 중 하나 이상의 간식을 좋아한다. 보다 구체적으로, i (1≤i≤N)번 학생은 Cᵢ개의 간식을 좋아하며, 그 간식들의 번호는 Aᵢ,₁, Aᵢ,₂, ⋯, Aᵢ,ᴄᵢ이다.

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

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

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

제약

• 주어지는 모든 수는 정수이다.
• 1 ≤ N ≤ 200000
• 정수 i (1 ≤ i ≤ N)에 대하여 1 ≤ ᴄᵢ ≤ N
• ᴄ₁ + ᴄ₂ + ⋯ + ᴄₙ ≤ 500000
• 정수 i (1 ≤ i ≤ N)와 정수 j (1 ≤ j ≤ ᴄᵢ)에 대하여 1 ≤ Aᵢ,ⱼ ≤ N
• 정수 i (1 ≤ i ≤ N)에 대하여, ᴄᵢ개의 정수 Aᵢ,₁, Aᵢ,₂, ⋯, Aᵢ,ᴄᵢ의 값은 모두 서로 다르다.

입력 형식

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

그다음 N개의 줄에 걸쳐, N명의 학생이 좋아하는 간식에 대한 정보가 주어진다. 이 중 i(

출력 형식

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

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

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

서브태스크
서브태스크점수설명

Subtask 1

6점

모든 i에 대해 C_i = 1

Subtask 2

11점

정답이 존재한다면 1, 2, …, N 순서도 정답이다

Subtask 3

8점

N ≤ 5

Subtask 4

12점

N ≤ 18

Subtask 5

18점

N ≤ 300

Subtask 6

20점

N ≤ 5000

Subtask 7

25점

추가 제약 없음 (N ≤ 200000)

예제 1
입력
3
2 1 2
2 2 3
1 2
출력
3 1 2
설명

각 학생이 좋아하는 간식은 다음과 같다.

1번 학생은 1, 2번 간식을 좋아한다.
2번 학생은 2, 3번 간식을 좋아한다.
3번 학생은 2번 간식을 좋아한다.

3번, 1번, 2번 학생이 이 순서대로 방에 들어가면 각 학생은 정확히 하나의 간식을 가져간다.

처음에 방에는 1, 2, 3번 간식이 모두 하나씩 있다.
3번 학생이 방에 들어가면 2번 간식을 가져간다. 이후 방에는 1, 3번 간식이 남아있다.
1번 학생이 방에 들어가면 1번 간식을 가져간다. 이후 방에는 3번 간식이 남아있다.
2번 학생이 방에 들어가면 3번 간식을 가져간다.

마찬가지로, 3번, 2번, 1번 학생이 이 순서대로 방에 들어가도 모든 학생은 정확히 하나의 간식을 가져간다.

문제 정보

anthony0506 작성

출처 KOI

평가 및 의견

간식 분배

개요
출제자 난이도 Gold II 골드 II 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

간식 분배

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
이 문제는 다음 언어만 허용합니다: C++23, C++20, C++17, Python 3, Python 3 (PyPy)
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8