样例没过,评测AC
查看原帖
样例没过,评测AC
719577
EdenSky楼主2024/8/11 19:46

求解答,贪心QAQ,玄1关(小号关)

#include<iostream>
#include<algorithm>
#include<vector>
#define pb emplace_back
using namespace std;
const int N=1005;
int n,a,fa[N],ans; bool vis[N];
vector<int> g[N]; struct pt{int d,id;}p[N];
inline void setup(int x,int fa,int dis){
  if(dis>=3) return ;
  vis[x]=1; 
  for(int i: g[x]){
    if(i==fa) continue;
    setup(i,x,dis+1);
  }
}
int main(){
  ios::sync_with_stdio(false),cin.tie(0);
  cin>>n; for(int i=2;i<=n;i++)
    cin>>a,g[i].pb(a),g[a].pb(i),
    p[i].d=p[a].d+1,p[i].id=i,fa[i]=a;
  sort(p+1,p+1+n,[](pt x,pt y){return x.d>y.d;});
  for(int i=1;i<=n;i++){
    if(vis[p[i].id]) continue;
    setup(fa[fa[p[i].id]],-1,0);
    ans++;
  }
  cout<<ans-1;
}
2024/8/11 19:46
加载中...