全MLE求助
查看原帖
全MLE求助
941228
mdxz114514楼主2024/8/14 21:30
#include<bits/stdc++.h>
using namespace std;
struct node{
	int to,next;
}lsqxx[1000006];
int head[1000006],cnt=0,ans=0,n,k,T;
int cnt2[1000006];
bool vis[1000006];
void add(int x,int y){
	lsqxx[++cnt].to=y;
	lsqxx[cnt].next=head[x];
	head[x]=cnt;
}
void dfs(int x,int f){
	//cout<<x<<' '<<f<<'\n';
	cnt2[x]=1;
	vis[x]=1;
	for(int i=head[x];i!=0;i=lsqxx[i].next){
		if(lsqxx[i].to==f)continue; 
		dfs(lsqxx[i].to,x);
		cnt2[x]+=cnt2[lsqxx[i].to];
	}
	if(cnt2[x]>=k){
		ans+=cnt2[x]/k;
		cnt2[x]%=k;
	}
}
int main(){
	cin>>T;
	while(T--){
		ans=0;
		cin>>n>>k;
		for(int i=1;i<n;i++){
			int x,y;
			cin>>x>>y;
			add(x,y);
			add(y,x);
		}dfs(1,0);
		if((ans==n/k)&&(n%k==0))cout<<"YES\n";
		else cout<<"NO\n"; 
	}
}

2024/8/14 21:30
加载中...