Livestock Lineup

시간 제한1초메모리 제한512 MB

요약
소 8마리와 '옆에서 짜야 한다'는 제약이 최대 7개 주어질 때, 모든 제약을 만족하는 순열 중 사전순으로 가장 앞선 것을 출력한다.
난이도

쉬움10점 중 3점

유형
완전 탐색, 백트래킹, 구현, 정렬
정답자
아직 제출이 없습니다

문제

매일 Farmer John은 Bessie, Buttercup, Belinda, Beatrice, Bella, Blue, Betsy, Sue라는 이름의 젖소 8마리의 젖을 짠다.

소들은 꽤 까다로워서, Farmer John이 NN개의 제약 조건(1≤N≤71 \leq N \leq 7)을 만족하는 순서로 젖을 짜기를 요구한다. 각 제약 조건은 "XX는 YY 옆에서 젖을 짜야 한다" 형태이며, 이는 소 XX가 젖 짜는 순서에서 소 YY 바로 뒤에 오거나 바로 앞에 와야 한다는 뜻이다.

Farmer John이 이 제약 조건을 모두 만족하는 소들의 순서를 정할 수 있도록 도와주자. 순서가 항상 존재함은 보장된다. 가능한 순서가 여러 개라면, 사전순으로 가장 앞서는 순서를 출력한다. 즉, 첫 번째 소는 유효한 순서에서 첫 번째로 올 수 있는 모든 소 중 이름이 사전순으로 가장 앞서는 소여야 한다. 이렇게 사전순으로 가장 앞서는 첫 번째 소로 시작하는 모든 순서 중에서 두 번째 소는 가능한 유효한 순서에서 사전순으로 가장 앞서는 소이고, 이런 식으로 계속한다.

입력

입력의 첫 줄에는 NN이 주어진다. 다음 NN개의 줄에는 "XX는 YY 옆에서 젖을 짜야 한다" 형태의 제약 조건 문장이 주어지며, XX와 YY는 Farmer John의 소 중 하나의 이름이다(가능한 여덟 개의 이름은 위에 나열되어 있다).

출력

모든 제약 조건을 만족하는 소들의 순서를 8줄에 걸쳐 한 줄에 한 마리씩 출력한다. 가능한 순서가 여러 개라면 사전순으로 가장 앞서는 순서를 출력한다.

예제1

  1. 예제 1

    입력
    3
    Buttercup must be milked beside Bella
    Blue must be milked beside Bella
    Sue must be milked beside Beatrice
    
    예상 출력
    Beatrice
    Sue
    Belinda
    Bessie
    Betsy
    Blue
    Bella
    Buttercup