求条
查看原帖
求条
1772707
code_by_hands楼主2025/7/22 19:32
#include<bits/stdc++.h>

using namespace std;
const int N=1e5+10;
vector<int> e[N];
int ch[N];
int vis[N];
int cnt;
int n,k;
void dfs(int x)
{
	vis[x]=1;
	ch[x]=1;
	for(auto it : e[x])
		if(!vis[it])
		{
			dfs(it);
			ch[x]+=ch[it];
			if(ch[x]==k)
				cnt++,ch[x]=0;
		}
}
int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		cin>>n>>k;
		memset(ch,0,sizeof(ch));
		memset(vis,0,sizeof(vis));
		for(int i=1;i<=n;i++)
			e[i].clear(); 
		int u,v;
		for(int i=1;i<n;i++)
			cin>>u>>v,e[u].push_back(v),e[v].push_back(u);
		if(n%k!=0)
		{
			cout<<"NO"<<endl;
			continue;
		}
		dfs(1);
		if(cnt==n/k)
			cout<<"YES"<<endl;
		else
			cout<<"NO"<<endl;
	}
	
	return 0;
}
2025/7/22 19:32
加载中...