간식 분배
의견: 0
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ₙ
을 공백으로 구분하여 출력한다.
가능한 출력이 여러 개라면 그중 아무거나 하나를 출력해도 정답으로 인정된다.
3
2 1 2
2 2 3
1 23 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
평가 및 의견
간식 분배
아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.
풀이 제출
간식 분배