CF1250N.Wires
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Polycarpus has a complex electronic device. The core of this device is a circuit board. The board has 109 contact points which are numbered from 1 to 109 . Also there are n wires numbered from 1 to n , each connecting two distinct contact points on the board. An electric signal can pass between wires A and B if:
- either both wires share the same contact point;
- or there is a sequence of wires starting with A and ending with B , and each pair of adjacent wires in the sequence share a contact point.
The picture shows a circuit board with 5 wires. Contact points with numbers 2,5,7,8,10,13 are used. Here an electrical signal can pass from wire 2 to wire 3 , but not to wire 1 .Currently the circuit board is broken. Polycarpus thinks that the board could be fixed if the wires were re-soldered so that a signal could pass between any pair of wires.
It takes 1 minute for Polycarpus to re-solder an end of a wire. I.e. it takes one minute to change one of the two contact points for a wire. Any contact point from range [1,109] can be used as a new contact point. A wire's ends must always be soldered to distinct contact points. Both wire's ends can be re-solded, but that will require two actions and will take 2 minutes in total.
Find the minimum amount of time Polycarpus needs to re-solder wires so that a signal can pass between any pair of wires. Also output an optimal sequence of wire re-soldering.
输入格式
The input contains one or several test cases. The first input line contains a single integer t — number of test cases. Then, t test cases follow.
The first line of each test case contains a single integer n ( 1≤n≤105 ) — the number of wires. The following n lines describe wires, each line containing two space-separated integers xi,yi ( 1≤xi,yi≤109 , xi=yi ) — contact points connected by the i -th wire. A couple of contact points can be connected with more than one wire.
Sum of values of n across all test cases does not exceed 105 .
输出格式
For each test case first print one line with a single integer k — the minimum number of minutes needed to re-solder wires so that a signal can pass between any pair of wires. In the following k lines print the description of re-solderings. Each re-soldering should be described by three integers wj,aj,bj ( 1≤wj≤n , 1≤aj,bj≤109 ). Such triple means that during the j -th re-soldering an end of the wj -th wire, which was soldered to contact point aj , becomes soldered to contact point bj instead. After each re-soldering of a wire it must connect two distinct contact points. If there are multiple optimal re-solderings, print any of them.
输入输出样例
输入#1
2 1 4 7 4 1 2 2 3 4 5 5 6
输出#1
0 1 2 3 5