트리 불 끄기

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

요약
밥이 a번 정점에서 시작해 이동하기 전마다 현재 정점의 전구를 토글하면서 트리를 걸어 다니며, 4N번 이하의 이동으로 모든 전구를 끄는 방법을 출력한다.
난이도

어려움10점 중 8점

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

문제

NN개의 정점으로 구성된 트리가 있다. 트리는 간선에 방향이 없는 연결된 그래프로, 각 정점에서 다른 정점으로 가는 최단 경로가 유일하다. 각 정점에는 전구와 스위치가 있는데, 각 전구는 켜져 있거나 꺼져 있다. 정점에 있는 스위치를 누르면, 그 정점의 전구의 상태가 바뀐다. 즉, 켜진 전구는 꺼지고, 꺼진 전구는 켜진다.

밥은 이 트리 위에 살고 있는 나무늘보이다. 밥은 처음에 aa번 정점에 있는데, 다음의 절차를 00번 이상 수행해 트리의 전구를 모두 꺼진 상태로 만들고자 한다.

  • 현재 밥이 vv번 정점에 있다고 하자. vv번 정점에 인접한 uu번 정점을 선택한 뒤, vv번 정점에 있는 스위치를 누르고 uu번 정점으로 이동한다.

밥을 도와 위 절차를 4N4N번 이하로 수행해 트리의 전구를 모두 꺼진 상태로 만들 수 있는 방법을 찾아 주자. 문제의 조건 하에 그러한 방법이 언제나 존재함을 증명할 수 있다.

입력

첫 번째 줄에 정점의 개수 NN과 밥이 처음에 위치한 정점의 번호 aa가 공백으로 구분되어 주어진다. (2≤N≤100,000;(2 \le N \le 100\\,000; 1≤a≤N)1 \le a \le N)

두 번째 줄에 전구의 상태를 나타내는 길이 nn의 문자열 SS가 주어진다. ii번 정점의 전구가 켜져 있는 상태라면 ii번째 문자는 \tt{'1'}, 그렇지 않다면 ii번째 문자는 \tt{'0'}이다.

세 번째 줄부터 N−1N-1개의 줄에 걸쳐 각각의 간선이 연결하는 두 정점의 번호 x_ix\_i, y_iy\_i가 공백으로 구분되어 주어진다. (1≤x_i<y_i≤N)(1 \le x\_i < y\_i \le N)

주어진 그래프는 올바른 트리임이 보장된다.

출력

첫 번째 줄에 밥이 트리의 전구를 모두 꺼진 상태로 만들기 위해 사용할 절차의 횟수 kk를 출력한다. (0≤k≤4N)(0 \le k \le 4N)

두 번째 줄에 각 절차에서 선택한 정점을 나타내는 kk개의 정수 u_1,u_2,⋯ ,u_ku\_1,u\_2,\cdots,u\_k를 공백으로 분리하여 출력한다. 이때 u_1u\_1번 정점은 aa번 정점에 인접해야 하며, 2≤i≤k2 \le i \le k인 모든 ii에 대해 u_iu\_i번 정점은 u_i−1u\_{i-1}번 정점에 인접해야 한다.

조건에 따라 트리의 전구을 모두 꺼진 상태로 만드는 방법이 여러 가지라면 그 중 하나만 출력한다. 또한, 수행하는 절차의 수가 최소가 될 필요는 없다.

힌트

예제에서 밥이 따르는 절차와 그에 따른 전구의 상태는 아래와 같다.

  1. 밥이 u=3u=3번 정점으로 이동하고, v=4v=4번 정점의 전구가 꺼진다.
  2. 밥이 u=2u=2번 정점으로 이동하고, v=3v=3번 정점의 전구가 꺼진다.
  3. 밥이 u=1u=1번 정점으로 이동하고, v=2v=2번 정점의 전구가 켜진다.
  4. 밥이 u=2u=2번 정점으로 이동하고, v=1v=1번 정점의 전구가 꺼진다.
  5. 밥이 u=3u=3번 정점으로 이동하고, v=2v=2번 정점의 전구가 꺼진다.
  6. 밥이 u=5u=5번 정점으로 이동하고, v=3v=3번 정점의 전구가 켜진다.
  7. 밥이 u=3u=3번 정점으로 이동하고, v=5v=5번 정점의 전구가 켜진다.
  8. 밥이 u=5u=5번 정점으로 이동하고, v=3v=3번 정점의 전구가 꺼진다.
  9. 밥이 u=3u=3번 정점으로 이동하고, v=5v=5번 정점의 전구가 꺼진다.
  10. 밥이 u=6u=6번 정점으로 이동하고, v=3v=3번 정점의 전구가 켜진다.
  11. 밥이 u=3u=3번 정점으로 이동하고, v=6v=6번 정점의 전구가 꺼진다.
  12. 밥이 u=4u=4번 정점으로 이동하고, v=3v=3번 정점의 전구가 꺼진다.

총 1212번의 절차를 시행하였으며, 절차가 끝난 후 트리의 전구는 모두 꺼진 상태이다.

예제1

  1. 예제 1

    입력
    6 4
    101101
    1 2
    2 3
    3 4
    3 5
    3 6
    
    예상 출력
    12
    3 2 1 2 3 5 3 5 3 6 3 4