|
|
|
@ -19,9 +19,7 @@ void dfs(int u, int fa) {
|
|
|
|
|
sz[u] = 1; // u为根的子树中,最起码有一个节点u
|
|
|
|
|
son[u] = 0; // 把节点u去掉后,剩下的连通分量中最大子树节点个数现在还不知道,预求最大,先设最小
|
|
|
|
|
|
|
|
|
|
// for (int i = 0; i < g[u].size(); i++) { // 枚举u的每一条出边
|
|
|
|
|
for (int i = h[u]; ~i; i = ne[i]) {
|
|
|
|
|
// int v = g[u][i];
|
|
|
|
|
for (int i = h[u]; ~i; i = ne[i]) { // 枚举u的每一条出边
|
|
|
|
|
int v = e[i];
|
|
|
|
|
if (v == fa) continue;
|
|
|
|
|
dfs(v, u);
|
|
|
|
@ -67,12 +65,16 @@ signed main() {
|
|
|
|
|
|
|
|
|
|
if (!r2) {
|
|
|
|
|
int r3 = g[r1][0];
|
|
|
|
|
|
|
|
|
|
// cout << "r3=" << r3 << " " << e[h[r1]] << endl;
|
|
|
|
|
|
|
|
|
|
cout << r1 << " " << r3 << endl;
|
|
|
|
|
cout << r1 << " " << r3 << endl;
|
|
|
|
|
} else {
|
|
|
|
|
int r3 = r1;
|
|
|
|
|
for (int i = 0; i < g[r2].size(); i++) {
|
|
|
|
|
r3 = g[r2][i];
|
|
|
|
|
|
|
|
|
|
for (int i = h[r2]; ~i; i = ne[i]) {
|
|
|
|
|
r3 = e[i];
|
|
|
|
|
if (r3 != r1) break;
|
|
|
|
|
}
|
|
|
|
|
cout << r3 << " " << r2 << endl;
|
|
|
|
|