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

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

약초학자들의 마을

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

요약
친구 관계 그래프가 주어질 때, 모든 정점에서 변을 가로지르지 않고 무한히 나아갈 수 있는 평면 직선 그리기가 가능한지 판정한다.
난이도

어려움10점 중 9점

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

문제

약초학자들이 거대한 숲의 경계에 새 마을을 세우기로 했다.

문제는 집과 길을 어떻게 배치하느냐이다. 약초학자들 중 상당수는 서로 친구여서 자주 오가고 싶어 하므로, 친구인 두 사람의 집 사이에는 길을 놓으려 한다. 하지만 약초학자들은 친구가 아닌 사람과는 다투기로 유명하다. 싫어하는 사람과 마주칠 일을 없애기 위해, 어떤 두 길도 서로 교차해서는 안 된다. 즉 마을 안에 교차로가 있어서는 안 되며, 길들은 오직 끝점(집)에서만 만날 수 있다. 입체 교차도 허용되지 않는다. 고가도로는 경관을 해치고, 지하도는 귀한 약초의 뿌리를 망가뜨리기 때문이다.

또한 각 약초학자는 어떤 길도 건너지 않고 숲으로 나갈 수 있어야 한다. 다시 말해, 모든 집에서 길을 건너지 않고 바깥의 '무한히 먼 곳'까지 갈 수 있어야 한다.

약초학자들 사이의 친구 관계가 주어질 때, 이런 이상적인 마을을 지을 수 있는지 판정하여라.

입력

입력은 여러 개의 테스트로 이루어진다.

각 테스트의 첫째 줄에는 두 정수 HH와 FF가 공백 하나로 구분되어 주어진다 (1≤H≤10 0001 \le H \le 10\,000, F≥0F \ge 0). HH는 약초학자의 수이며, 각 약초학자는 00부터 H−1H-1까지의 정수 번호를 가진다. FF는 친구 쌍의 개수이다.

이어지는 FF개의 줄에 각 친구 쌍이 주어진다. 각 줄에는 두 정수 h1h_1, h2h_2가 공백 하나로 구분되어 주어지며 (0≤h1,h2<H0 \le h_1, h_2 < H), 번호가 h1h_1인 약초학자와 h2h_2인 약초학자가 친구임을 뜻한다. 같은 친구 쌍은 정확히 한 번만 주어진다.

여러 테스트는 구분자 없이 곧바로 이어진다. 입력의 끝은 두 개의 00이 적힌 줄로 표시된다.

출력

각 테스트마다 한 줄씩 출력한다. ii번째 줄은 ii번째 테스트에 대한 답이다. 해당 테스트에서 마을을 지을 수 있으면 그 줄에 Yes, village can be built 를, 지을 수 없으면 No, village cannot be built 를 출력한다.

예제3

  1. 예제 1

    입력
    3 3
    0 1
    0 2
    1 2
    4 6
    0 1
    0 2
    0 3
    1 2
    1 3
    2 3
    0 0
    
    예상 출력
    Yes, village can be built
    No, village cannot be built
    
  2. 예제 2

    입력
    1 0
    0 0
    
    예상 출력
    Yes, village can be built
    
  3. 예제 3

    입력
    2 1
    0 1
    0 0
    
    예상 출력
    Yes, village can be built