만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

관광지 나누기

시간 제한2초메모리 제한1024 MB

요약
연결된 그래프의 정점을 크기가 a, b, c인 세 집합으로 나누고, 그중 적어도 두 집합이 연결되도록 하는 분할을 찾습니다.
난이도

보통10점 중 7점

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

문제

바쿠에는 0번부터 n−1n-1번까지 번호가 붙은 nn개의 관광지가 있다. 0번부터 m−1m-1번까지 번호가 붙은 양방향 도로 mm개도 있다. 각 도로는 서로 다른 두 관광지를 잇는다. 도로를 따라 어떤 두 관광지든 서로 오갈 수 있다.

Fatima는 3일 동안 모든 관광지를 둘러볼 계획이다. 첫째 날에 aa곳, 둘째 날에 bb곳, 셋째 날에 cc곳을 방문하려고 한다. 그래서 nn개의 관광지를 크기가 각각 aa, bb, cc인 세 집합 AA, BB, CC로 나눈다. 각 관광지는 정확히 한 집합에 속하므로 a+b+c=na + b + c = n이다.

관광지 집합 SS는 SS 밖의 관광지를 거치지 않고 SS 안의 임의의 두 관광지를 도로로 오갈 수 있으면 연결되어 있다고 한다. 세 집합 중 적어도 두 집합이 연결되도록 AA, BB, CC를 찾아라. 이 조건을 만족하는 분할을 유효한 분할이라고 한다.

주어진 aa, bb, cc에 대해 유효한 분할을 찾거나, 유효한 분할이 존재하지 않는다고 판정하라. 유효한 분할이 여러 개라면 그중 아무것이나 출력해도 된다.

제한

  • 3≤n≤100 0003 \leq n \leq 100\,000
  • 2≤m≤200 0002 \leq m \leq 200\,000
  • 1≤a,b,c≤n1 \leq a, b, c \leq n
  • a+b+c=na+b+c = n
  • 두 관광지 사이를 잇는 도로는 최대 한 개이다.
  • 도로를 따라 어떤 두 관광지든 서로 오갈 수 있다.
  • 0≤p[i],q[i]≤n−10 \leq p[i], q[i] \leq n-1이고 p[i]≠q[i]p[i] \neq q[i]이다 (0≤i≤m−1)(0 \leq i \leq m - 1)

예제1

  1. 예제 1

    입력
    3 2
    0 1
    1 2
    1 1 1
    
    예상 출력
    YES
    2 1 3