D题求助
#include<iostream>
#include<vector>
#define endl "\n"
#define int long long
using namespace std;
const int N=2e5+5;
vector<int> edge[N];
int dep[N],n,k;
void dfs(int u,int fa){
dep[u]=dep[fa]+1;
for(int i=0;i<edge[u].size();i++){
int v=edge[u][i];
if(v==fa)continue;
dfs(v,u);
}
}
bool b[2][N];
void calc(int u,int x){
dfs(u,0);
int maxx=0;
for(int i=1;i<=n;i++)maxx=max(maxx,dep[i]);
for(int i=1;i<=n;i++){
if(maxx==dep[i])b[x][i]=true;
}
}
signed main(){
cin.tie(0);cout.tie(0);
ios::sync_with_stdio(false);
int t;
cin>>t;dep[0]=-1;
while(t--){
cin>>n>>k;
for(int i=1;i<=n;i++)edge[i].clear(),b[0][i]=b[1][i]=0;
for(int i=1;i<n;i++){
int u,v;
cin>>u>>v;
edge[u].push_back(v);
edge[v].push_back(u);
}
calc(1,1);
int o=0;
for(int i=1;i<=n;i++){
if(o==10)break;
if(b[1][i])calc(i,0),o++;
}
o=0;
for(int i=1;i<=n;i++){
if(o==10)break;
if(b[0][i])calc(i,1),o++;
}
for(int i=1;i<=n;i++)cout<<b[k&1][i]<<" ";
cout<<endl;
}
}
通过96.43%,但我在场上hack了半天也没hack掉啊?求hack