92pts TLE#11 求助
查看原帖
92pts TLE#11 求助
1011503
Randomy楼主2024/9/27 14:08
#include<bits/stdc++.h>
using namespace std;

bool p[100001];
int father[100001];
int find(int k){
    if(father[k]==k){
        return k;
    }
    else return father[k]=find(father[k]);
}
int ffind(int k){
    if(father[k]==k||p[k]==1){
        return k;
    }
    else{
        return ffind(father[k]);
    }
}
int main(){

    int n,q;
    cin>>n>>q;
    for(int i=1;i<=n;i++){
        father[i]=i;
    }
    for(int i=1;i<=n-1;i++){
        int r,t;
        cin>>r>>t;
        father[find(t)]=r;
    }
    for(int i=1;i<=q;i++){
        char oper;int num;
        cin>>oper>>num;
        if(oper=='C'){
            p[num]=1;
        }
        else{
            cout<<ffind(num)<<endl;
        }
    }
	return 0;
}

脑子一热写的,写完我都不知道怎么写出来的莫名其妙就能跑了QAQ

2024/9/27 14:08
加载中...