Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <string>#include <vector>#include <queue>#include <unordered_set>using namespace std;void constructTree(vector<vector<int> >& edges, int node, int parent, int degree, vector<int>& parents, vector<int>& degrees, vector<int>& visited){parents[node] = parent;degrees[node] = degree;visited[node] = 1;for(int i: edges[node]){if(visited[i] != 1){constructTree(edges, i, node, degree + 1, parents, degrees, visited);}}}unordered_set<int> findPaths(vector<int>& parents, const vector<int>& degrees, int x, int y){unordered_set<int> res;if(degrees[y] > degrees[x]){swap(x, y);}while(degrees[x] > degrees[y]){res.insert(x);x = parents[x];}while(x != y){res.insert(x);res.insert(y);x = parents[x];