[BOJ 15107] Rainbow Roads

View as PDF

Submit solution

Points: 4
Time limit: 2.0s
Memory limit: 512M

Problem types
Allowed languages
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text

You are given a tree with n nodes (conveniently numbered from 1 to n). Each edge in this tree has one of n colors. A path in this tree is called a rainbow if all adjacent edges in the path have different colors. Also, a node is called good if every simple path with that node as one of its endpoints is a rainbow path.</p>

Find all the good nodes in the given tree.

A simple path is a path that does not repeat any vertex or edge.

입력 형식

The first line of input contains a single integer n (1 ≤ n ≤ 50,000).</p>

Each of the next n − 1 lines contains three space-separated integers ai, bi, and ci (1 ≤ ai, bi, ci ≤ n; ai ≠ bi), describing an edge of color ci that connects nodes ai and bi.

It is guaranteed that the given edges form a tree.

출력 형식

On the first line of the output, print k, the number of good nodes.</p>

In the next k lines, print the indices of all good nodes in numerical order, one per line.

예제 입력 1

8
1 3 1
2 3 1
3 4 3
4 5 4
5 6 3
6 7 2
6 8 2

예제 출력 1

4
3
4
5
6

예제 입력 2

8
1 2 2
1 3 1
2 4 3
2 7 1
3 5 2
5 6 2
7 8 1

예제 출력 2

0

예제 입력 3

9
1 2 2
1 3 1
1 4 5
1 5 5
2 6 3
3 7 3
4 8 1
5 9 2

예제 출력 3

5
1
2
3
6
7

예제 입력 4

10
9 2 1
9 3 1
9 4 2
9 5 2
9 1 3
9 6 4
1 8 5
1 10 5
6 7 9

예제 출력 4

4
1
6
7
9

힌트

For the first sample, node 3 is good since all paths that have node 3 as an endpoint are rainbow. In particular, even though the path 3—4—5—6 has two edges of the same color (i.e. 3—4, 5—6), it is still rainbow since these edges are not adjacent.


Comments

There are no comments at the moment.