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

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

두 트리

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

요약
정점 N개와 서로 다른 2(N-1)개의 간선으로 이루어진 그래프에서 간선을 빨강과 파랑으로 나누어 각각 트리가 되게 만들 수 있는지 판별하고, 가능하면 색칠 결과를 출력합니다.
난이도

보통10점 중 6점

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

문제

NN개의 정점과 서로 다른 2(N−1)2(N-1)개의 간선으로 이루어진 그래프가 주어진다. 각 정점은 11번부터 NN번까지, 각 간선은 11번부터 2(N−1)2(N-1)번까지 번호가 부여되어 있다. ii번 간선은 A_iA\_i번 정점과 B_iB\_i번 정점을 서로 연결한다. (1≤i≤2(N−1)1 \le i \le 2(N-1))

각 간선을 빨강 혹은 파랑으로 칠하자. 빨간 간선으로 이루어진 그래프와 파란 간선으로 이루어진 그래프가 각각 트리가 되도록 간선을 칠할 수 있는지 판별하라.

입력

첫째 줄에 정수 NN이 주어진다. (4≤N≤3,0004 \le N \le 3\\,000)

둘째 줄부터 2(N−1)2(N-1)개의 줄에 걸쳐 그래프의 간선이 주어진다. (i+1)(i+1)번째 줄에는 두 정수 A_iA\_i, B_iB\_i가 주어진다. (1≤i≤2(N−1)1 \le i \le 2(N-1), 1≤A_i≤N1 \le A\_i \le N, 1≤B_i≤N1 \le B\_i \le N, A_i≠B_iA\_i \ne B\_i)

각 간선이 연결하는 정점쌍은 모두 다르다. (1≤i<j≤2(N−1)1 \le i < j \le 2(N-1), \left\\{ A\_i, B\_i \right\\} \ne \left\\{ A\_j, B\_j \right\\})

출력

만일 불가능하다면 첫째 줄에 "NO"를 출력하라.

만약 가능하다면 첫째 줄에 "YES"를 출력하라. 이후 둘째 줄에 R과 B로 이루어진 길이 2(N−1)2(N-1)의 문자열을 출력하라. 이 문자열의 ii번째 문자가 R이라는 것은 ii번 간선을 빨강으로 칠해야 함을, B라는 것은 파랑으로 칠해야 함을 의미한다. (1≤i≤2(N−1)1 \le i \le 2(N-1))

힌트

세 개의 예제를 그림으로 나타내면 아래와 같다.

예제3

  1. 예제 1

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

    입력
    5
    1 5
    3 5
    3 4
    4 5
    2 3
    2 5
    1 2
    1 3
    
    예상 출력
    YES
    BRRBBBRR
    
  3. 예제 3

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