样例没过全WA,看着没问题,求助!!!
查看原帖
样例没过全WA,看着没问题,求助!!!
322437
xxxalq楼主2023/6/5 22:24
#include<iostream>
#include<vector>
using namespace std;
int n,rudu[200010],ans=0x3f3f3f3f,tmp,dq;
vector<int>mp[200010];
bool mk[200010];
void del(int x){
    mk[x]=true;
    for(int i=0;i<mp[x].size();i++){
        rudu[mp[x][i]]-=1;
        if(rudu[mp[x][i]]==0&&mk[rudu[mp[x][i]]]==false){
            del(mp[x][i]);
        }
    }
    return;
}
void zh(int x){
	mk[x]=1;
    if(x==dq){
        return;
    }
    for(int i=0;i<mp[x].size();i++){
        tmp+=1;
        zh(mp[x][i]);
    }
    return;
}
int main(){
    cin>>n;
    int to;
    for(int i=1;i<=n;i++){
        cin>>to; 
        mp[i].push_back(to);
        rudu[to]+=1;
    }
    for(int i=1;i<=n;i++){
        if(mk[i]==false&&rudu[i]==0){
            del(i);
        }
    }
    for(int i=1;i<=n;i++){
        if(mk[i]==0){
            tmp=0,dq=i;
            zh(i);
            ans=min(ans,tmp);
        }
    }
    cout<<ans;
    return 0;
}
2023/6/5 22:24
加载中...