선인장 혁명

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

요약
주어진 선인장 그래프를 크기가 n/k로 같은 k개의 연결된 구역으로 나눌 수 있는지 판별하는 문제입니다.
난이도

어려움10점 중 8점

유형
그래프, 동적 계획법, 트리
정답자
아직 제출이 없습니다

문제

전 지구적 재난 이후 지하 동굴에서 살아남은 도시 ACM(Advanced Cave Megapolis)이 있다. 동굴들은 통로로 연결되어 있으며, 도시 전체 지도는 동굴을 정점으로, 통로를 간선으로 하는 무향 그래프로 나타낼 수 있다.

이 동굴 도시에서 혁명이 일어났다. 도시의 전체 주민은 함께 따라야 할 공통 법률에 합의하지 못한 채 kk개의 정당으로 균등하게 나뉘었고, 이들은 도시를 kk개의 구역으로 나눈 뒤 각 구역의 주민이 원하는 법을 스스로에게 적용하기로 했다.

도시 지도가 그래프로 주어질 때, 이 그래프를 크기가 같은 kk개의 구역으로 분할할 수 있는지 판별하여라. 각 구역은 연결된 부분그래프여야 한다. 즉, 그 구역을 이루는 정점 집합이 유도하는 부분그래프가 연결되어 있어야 한다.

정점의 수 nn은 kk로 나누어떨어지므로, 각 구역은 정확히 n/kn/k개의 동굴을 포함해야 한다. 주어지는 지도는 항상 선인장(cactus) 그래프이다. 선인장이란 모든 간선이 많아야 하나의 단순 사이클에만 속하는 연결 무향 그래프로, 트리에 일부 사이클을 허용한 일반화라고 볼 수 있다.

입력

첫째 줄에 세 정수 nn, mm, kk가 주어진다 (1≤n≤500001 \le n \le 50000, 0≤m≤100000 \le m \le 10000, 1≤k≤n1 \le k \le n). nn은 정점의 수이며 정점은 11번부터 nn번까지 번호가 매겨진다. 그래프의 간선은 서로 겹치지 않는 여러 개의 경로로 주어지며, mm은 그러한 경로의 개수, kk는 나눌 구역의 수이다. nn은 kk로 나누어떨어진다.

이어지는 mm개의 줄에는 각각 하나의 경로가 주어진다. 한 경로는 정수 sis_i (2≤si≤10002 \le s_i \le 1000)로 시작하고, 그 뒤에 11 이상 nn 이하의 정수가 sis_i개 온다. 이 정수들은 경로가 지나는 정점을 순서대로 나타내며, 인접한 두 정점은 하나의 간선을 이룬다. 경로에서 이웃한 두 정점은 서로 다르다. 한 경로는 같은 정점을 여러 번 지날 수 있지만, 입력 전체에서 각 간선은 정확히 한 번만 등장하고 다중 간선은 없다(임의의 두 정점 사이에는 간선이 많아야 하나뿐이다).

입력으로 주어지는 그래프는 선인장이다.

출력

도시를 각각 정확히 n/kn/k개의 동굴로 이루어진 kk개의 연결된 구역으로 분할할 수 있으면 YES를, 그렇지 않으면 NO를 출력한다.

예제4

  1. 예제 1

    입력
    15 3 3
    9 1 2 3 4 5 6 7 8 3
    7 2 9 10 11 12 13 10
    5 2 14 9 15 10
    
    예상 출력
    YES
    
  2. 예제 2

    입력
    4 2 2
    3 1 2 3
    2 2 4
    
    예상 출력
    NO
    
  3. 예제 3

    입력
    1 0 1
    
    예상 출력
    YES
    
  4. 예제 4

    입력
    6 1 3
    7 1 2 3 4 5 6 1
    
    예상 출력
    YES