아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

이 문장은 거짓이다

면접 대비

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

요약
각 문장이 다른 문장의 참 또는 거짓을 주장할 때, 일관된 진리 할당이 존재하는지 판정하고 존재하면 참인 문장 수의 최댓값을 구한다.
난이도

보통10점 중 6점

유형
그래프, DFS, 그리디, 구현
정답자
아직 제출이 없습니다

문제

제온 2.4 왕의 궁정은 음모와 계략으로 가득합니다. 왕의 비밀 정보국이 최근 입수한 문서 하나가 어떤 불온한 계획의 일부로 의심받고 있습니다. 이 문서는 서로의 참·거짓을 언급하는 문장들의 집합일 뿐입니다. 각 문장은 “Sentence X is true.”(X번 문장은 참이다) 또는 “Sentence X is false.”(X번 문장은 거짓이다)의 형태이며, 여기서 X는 집합 안의 한 문장을 가리킵니다(자기 자신을 가리킬 수도 있습니다). 정보국은 이 문장들이 실제로는 아직 발견되지 않은 또 다른 문서를 가리킨다고 의심합니다.

각 문장에는 참 또는 거짓 값을 부여할 수 있습니다. 어떤 값 배정이 유효하다는 것은, 모든 문장에 대해 그 문장이 참인 것과 그 문장이 주장하는 내용(즉 X번 문장의 참·거짓)이 실제로 성립하는 것이 정확히 일치함을 뜻합니다.

주어진 문장 집합이 모순 없이 성립하는지, 즉 유효한 값 배정이 존재하는지 판정하세요. 존재한다면, 유효한 배정에서 참으로 만들 수 있는 문장의 최대 개수를 구하세요.

입력

입력은 여러 개의 문서로 이루어집니다. 각 문서는 그 문서에 포함된 문장의 개수 NN을 담은 한 줄로 시작합니다(1≤N≤10001 \le N \le 1000). 이어지는 NN개의 줄에는 각각 하나의 문장이 있습니다. 문장은 입력에 나타나는 순서대로 1번부터 차례로 번호가 매겨집니다(첫 번째가 1번 문장, 두 번째가 2번 문장, 이런 식입니다). 각 문장은 “Sentence X is true.” 또는 “Sentence X is false.”의 형태이며 1≤X≤N1 \le X \le N입니다. N=0N = 0인 줄은 입력의 끝을 나타냅니다.

출력

각 문서마다 한 줄을 출력합니다. 문서가 모순 없이 성립하면 유효한 배정에서 참으로 만들 수 있는 문장의 최대 개수를 출력합니다. 그렇지 않으면 ‘Inconsistent’를 출력합니다.

예제2

  1. 예제 1

    입력
    1
    Sentence 1 is false.
    1
    Sentence 1 is true.
    5
    Sentence 2 is false.
    Sentence 1 is false.
    Sentence 3 is true.
    Sentence 3 is true.
    Sentence 4 is false.
    0
    
    예상 출력
    Inconsistent
    1
    3
    
  2. 예제 2

    입력
    2
    Sentence 2 is true.
    Sentence 1 is true.
    0
    
    예상 출력
    2