在判定节点是否是叶节点,为什么这样写可以:
int vis[N];
void init(int u,int fa) {
bool ok=false;
vis[u]=true;
for (int i=h[u];~i;i=ne[i]) {
if (e[i]==fa || vis[e[i]]) continue;
init(e[i],u);
ok=true;
}
if (!ok) flag[u]=true;
}
而这样就 TLE 了呢:
void init(int u,int fa) {
bool ok=false;
for (int i=h[u];~i;i=ne[i]) {
if (e[i]==fa) continue;
init(e[i],u);
ok=true;
}
if (!ok) flag[u]=true;
}
感觉数据好像有环(不确定)。