代码求条
查看原帖
代码求条
322792
Alea楼主2023/10/18 19:55

我认为它的思路是正确的,但是出现了一些 WA。

另外为什么洛谷上炼焦三发都是 UKE?

#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const int SIZE=1e5+10;
int n,k,gw[SIZE],ans=0,dep[SIZE];
vector<int> edge[SIZE];
queue<int> que;
int main(){
    cin>>n>>k;
    for(int i=1;i<=n;i++) cin>>gw[i];
    if(gw[1]!=1) ans++;
    for(int i=2;i<=n;i++) if(gw[i]==i) gw[i]=1,ans++;
    for(int i=2;i<=n;i++) edge[gw[i]].push_back(i);
    que.push(1);
    while(!que.empty()){
        int u=que.front();
        que.pop();
        for(int v:edge[u]){
            dep[v]=dep[u]+1;
            if(dep[v]>k) dep[v]=1,ans++;
            que.push(v);
        }
    }
    cout<<ans<<endl;
    return 0;
}
2023/10/18 19:55
加载中...