페인트 칠하기

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

요약
색이 칠해진 무방향 그래프에서 이동 경로로 각 건물을 목표 색으로 칠할 수 있는지 판정하고, 방문 횟수 1,000,000 이하의 실제 방문 순서를 출력한다. 색 c의 도로로 건물에 들어가면 그 건물은 c로 덧칠된다.
난이도

어려움10점 중 8점

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

문제

건물 NN개와 도로 MM개로 이루어진 도시가 있습니다. ii번 도로는 u_iu\_i번 건물과 v_iv\_i번 건물을 양방향으로 잇습니다. 두 개 이상의 도로가 같은 건물 쌍을 서로 잇는 경우는 없습니다. 각 도로는 KK가지 색의 유성 페인트 중 하나로 칠해져 있는데, ii번 도로는 c_ic\_i번 색의 페인트로 칠해져 있습니다. 이 페인트는 아직 다 마르지 않았기 때문에, ii번 도로를 거친 직후 방문한 건물은 c_ic\_i번 색으로 덮여 칠해질 것입니다. (1≤i≤M)(1\le i\le M)처음에 모든 건물의 색은 00번 색입니다.

행위예술가 은하는 다음과 같은 방법으로 건물에 색을 칠하려고 합니다.

  • 은하가 처음에 시작할 건물을 골라서 해당 건물로 갑니다.

  • 모든 건물에 원하는 색이 칠해질 때까지 다음 단계를 반복합니다.

    • 현재 있는 aa번 건물에서, pp번 색으로 칠해진 도로를 통해 인접한 bb번 건물로 이동합니다. 같은 건물을 여러 번 방문해도 됩니다.
      • (a,b,p)=(u_i,v_i,c_i)(a,b,p) =(u\_i,v\_i,c\_i) 혹은 (v_i,u_i,c_i)(v\_i,u\_i,c\_i)인 ii가 존재해야 합니다.
    • bb번 건물의 색을 이전에 칠해진 색과 관계없이 pp번 색으로 덧칠합니다.

은하는 1≤j≤N1\le j\le N인 모든 jj에 대해 jj번째 건물의 색을 r_jr\_j로 칠하려 합니다. 이것이 가능한지 판단하고, 가능하면 방법을 하나 출력하세요.

입력

첫 줄에 건물의 수 NN, 도로의 수 MM, 페인트 색의 수 KK가 공백으로 구분되어 주어집니다. (2≤N≤100,000;(2 \le N \le 100\\,000; 1≤M≤200,000;1 \le M \le 200\\,000; 1≤K≤100,000)1 \le K \le 100\\,000)

둘째 줄에는 목표로 하는 건물 색을 의미하는 r_1,r_2,⋯ ,r_Nr\_1, r\_2, \cdots, r\_N이 공백으로 구분되어 주어집니다. (1≤r_j≤K)(1 \le r\_j \le K)

다음 MM개의 줄의 ii번째 줄에는, 도로의 정보를 의미하는 u_i,v_i,c_iu\_i, v\_i, c\_i가 공백으로 구분되어 주어집니다. (1≤u_i<v_i≤N;(1 \le u\_i < v\_i \le N; 1≤c_i≤K;1 \le c\_i \le K; i≠j→(u_i,v_i)≠(u_j,v_j))i \ne j \rightarrow (u\_i, v\_i) \ne (u\_j, v\_j) )

주어지는 모든 입력은 정수입니다.

출력

1≤j≤N1\le j\le N인 모든 jj에 대해 jj번째 건물의 색을 r_jr\_j로 칠할 수 있으면 첫 줄에 YES를, 아니면 NO를 출력하세요.

첫 줄에 YES를 출력했다면, 둘째 줄에 은하가 방문한 건물의 수를 출력한 후, 셋째 줄에 은하가 방문한 건물 번호를 방문한 순서로 공백으로 구분하여 출력하세요. 건물을 방문한 총 횟수는 1,000,0001\\, 000\\, 000 이하여야 하며, 해당 순서로 건물을 방문한 결과 1≤j≤N1\le j\le N인 모든 jj에 대해 jj번째 건물의 색이 r_jr\_j여야 합니다. 목표대로 색을 칠할 수 있는 경우, 입력 조건을 만족하는 모든 입력에 대해 건물을 1,000,0001\\, 000\\, 000번 이하로 방문하여 색을 칠할 수 있다는 것을 증명할 수 있습니다.

예제2

  1. 예제 1

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

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