题目链接:http://dsalgo.openjudge.cn/tree/10/
AC代码
#include <cstdio>
using namespace std;
const int N = 2001;
int prev[N], mem[N], it_mem; // mem和it_mem是一个用于消除递归的栈和该栈的栈顶指针
bool ranks[N]; // ranks[k]=true代表数组第k只虫子和第prev[k]只虫子是异性
int treeFind(int x) {
if (prev[x] == x)
return x;
it_mem = 0;
while (prev[x] != x) {
mem[it_mem++