求错
  • 板块CF928B Chat
  • 楼主Graph_Theory
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/5/16 16:30
  • 上次更新2023/10/23 15:36:22
查看原帖
求错
672044
Graph_Theory楼主2023/5/16 16:30
#include <bits/stdc++.h>
using namespace std;
int n,k;
int fa[100001];
int find(int x)
{
    if(fa[x] == x) {return x;}
    else    {return find(fa[x]);}
}

int maxans(int x)
{ 
    int fmax=-11;
    if(find(x)==x) return 1;
    for(int i=(x-k<=0?1:x-k);i<=(x+k>n?n:x+k);i++)
    {
        fmax=max(fmax,maxans(i));
    }
    return fmax+1;
} 
int main()
{
    cin>>n>>k;
    for(int i=1;i<=n;i++) {cin>>fa[i];if(fa[i]==0) fa[i]=i;}
    for(int i=1;i<=n;i++)
    {
        cout<<maxans(i)<<" ";
    }
    return 0;
}
2023/5/16 16:30
加载中...