#P12434. [NERC2023] Cactus Transformation
[NERC2023] Cactus Transformation
题目描述
In the university, Caroline started to learn about cactus graphs. Her teacher wanted to check whether the students really understood the definition of a cactus or not and gave them the following problem as a home assignment:
You are given two cactuses with the same number of vertices and edges. Your task is to answer whether it is possible to transform the first cactus into the second one using only the following two-step operation at most times:
- Pick an arbitrary edge from the first cactus and remove it (note that after this action, it's not necessary that graph is a cactus);
- Add an arbitrary non-existing edge into the first graph, so that the graph becomes a cactus.
Note that the operation consists of both actions, so you must apply both actions.
It's guaranteed that if it's possible to transform the first cactus into the second one, then it can be done by using at most operations.
The teacher promised to give a perfect grade without an exam to anyone who solved the problem. Since the given cactuses are big and Caroline can't solve the problem independently in this short period of time, she asked you to help her write a program that solves the problem.
A cactus is a connected undirected graph in which every edge lies on at most one simple cycle. Intuitively, a cactus is a generalization of a tree where some cycles are allowed. Multiedges (multiple edges between a pair of vertices) and loops (edges that connect a vertex to itself) are not allowed in a cactus.
Two cactuses are called same if for any pair of vertices and (), either there exists an edge in both cactuses or does not.
输入格式
The first line contains two integers and (, ) --- the number of vertices and edges in the cactuses. Each of the next lines contains two integers and () --- the edges of the cactuses. The first lines represent the first cactus, while the second lines represent the second cactus.
输出格式
If transforming the first cactus into the second one is impossible, output the single line with the word NO.
Otherwise, in the first line output the single word YES. In the second line output an integer () --- the number of operations. Each of the following lines should contain four integers (, ). The first two integers (, ) represent the vertices of the removed edge, while the last two integers (, ) represent the vertices of the added edge.
5 5
1 2
3 1
2 4
3 4
4 5
1 2
3 2
3 1
4 1
3 5
YES
3
3 4 2 3
5 4 3 5
2 4 1 4
5 6
1 2
2 3
1 3
4 3
3 5
5 4
1 2
2 4
4 1
4 3
3 5
4 5
NO
提示
Sample 1 Explanation

Sample 2 Explanation
