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

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

깃발 꽂기

면접 대비

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

요약
같은 N개 정점 위에 지상 통로 그래프와 구름다리 그래프가 주어질 때, 지상 통로만 쓰는 모든 경로에 깃발이 하나 이상 있고 구름다리만 쓰는 모든 경로에는 깃발이 하나 이하가 되도록 건물을 고른다.
난이도

보통10점 중 6점

유형
그래프, 유니온 파인드, DFS
정답자
아직 제출이 없습니다

문제

KSA는 NN개의 건물로 구성되어 있으며 1,2,⋯ ,N1, 2, \cdots, N으로 건물 번호가 붙어 있다. 또한, 건물들 사이를 이동할 수 있는 AA개의 지상 통로와 BB개의 구름다리가 있다. 지상 통로는 1,2,⋯ ,A1, 2, \cdots, A로, 구름다리는 1,2,⋯ ,B1, 2, \cdots, B로 번호가 붙어 있다.

ii번 지상 통로는 서로 다른 두 건물 U_iU\_i와 V_iV\_i를 양방향으로 연결한다. (1≤i≤A)(1 \le i \le A) 즉, U_iU\_i에서 V_iV\_i 방향, V_iV\_i에서 U_iU\_i 방향 모두 이동할 수 있다.

비슷하게, ii번 구름다리는 서로 다른 두 건물 W_iW\_i와 X_iX\_i를 양방향으로 연결한다. (1≤i≤B)(1 \le i \le B)

두 건물 사이에 지상 통로나 구름다리가 여러 개 존재할 수도 있다.

이제 아래 조건을 만족하게끔 00개 이상의 건물에 깃발을 꽂으려고 한다. 이때 경로의 양쪽 끝에 있는 건물도 경로에 포함된다.

  • 한 개 이상의 지상 통로를 지나고, 구름다리를 지나지 않는 모든 경로에서 깃발이 꽂힌 건물의 개수는 11개 이상이다.
  • 한 개 이상의 구름다리를 지나고, 지상 통로를 지나지 않는 모든 경로에서 깃발이 꽂힌 건물의 개수는 11개 이하이다.

하나의 경로는 같은 통로나 다리를 여러 번 지날 수 없다. 조건을 만족하려면 어떤 건물들에 깃발을 꽂아야 하는지 찾아보자!

입력

첫 번째 줄에 세 정수 NN, AA, BB가 주어진다.

i+1i + 1번째 줄에 두 정수 U_iU\_i, V_iV\_i가 주어진다. (1≤i≤A)(1 \le i \le A)

i+A+1i + A + 1번째 줄에 두 정수 W_iW\_i, X_iX\_i가 주어진다. (1≤i≤B)(1 \le i \le B)

출력

첫 번째 줄에 조건을 만족하게끔 건물들에 깃발을 꽂을 수 있다면 YES, 아니라면 NO를 출력한다.

만약 꽂을 수 있다면, 00개 이상의 정수를 출력한다. 각 정수는 깃발을 꽂을 건물들의 번호를 의미한다. 단, 같은 건물 번호를 중복해서 출력하지 않아야 한다.

깃발을 하나도 꽂지 않는 경우도 조건을 만족한다면 두 번째 줄에 아무것도 출력하지 않아도 된다.

정답이 여러 개 존재한다면 아무거나 출력해도 상관없으며, 정수들을 출력하는 순서는 상관없다.

제한

  • 1≤N,A,B≤2×1051 \leq N,A,B \leq 2 \times 10^5
  • 1≤U_i,V_i≤N1 \le U\_i, V\_i \le N; U_i≠V_iU\_i \ne V\_i (1≤i≤A)(1 \le i \le A)
  • 1≤W_i,X_i≤N1 \le W\_i, X\_i \le N; W_i≠X_iW\_i \ne X\_i (1≤i≤B)(1 \le i \le B)

예제2

  1. 예제 1

    입력
    3 1 1
    1 2
    2 3
    
    예상 출력
    YES
    1 2
    
  2. 예제 2

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