求助10pts
查看原帖
求助10pts
773915
endswitch楼主2023/8/8 11:33
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int T,n,k,u,v,cnt,t[N];
vector<int> g[N];
inline void dfs(int x,int last) {
	t[x]=1;
	for(auto u:g[x])
		if(u!=last) dfs(u,x),t[x]+=t[u];
	if(t[x]==k) cnt++,t[x]=0;
}
int main() {
	ios_base::sync_with_stdio(NULL);
	cin.tie(nullptr);
	cout.tie(nullptr);
	cin>>T;
	while(T--) {
		cin>>n>>k;
		for(int i=1;i<=n-1;i++)
			cin>>u>>v,g[u].push_back(v),g[v].push_back(u);
		if(n%k) {
			cout<<"NO\n";
			continue;
		}
		dfs(1,-1);
		if(cnt==n/k) cout<<"YES\n";
		else cout<<"NO\n";
		cnt=0;
		for(int i=1;i<=n;i++)
			t[i]=0,g[i].clear();
	}
	return 0;
}

就对了一个点,其余的都MLE了。

2023/8/8 11:33
加载中...