MLE求助
查看原帖
MLE求助
174863
2018g20楼主2023/3/6 22:02

99 个 MLE , 11 个 AC

#include<iostream>
#include<cstring>
using namespace std;
struct node
{
    int to,next;
};
int t,n,k,cnt,sum,x,y;
node a[100003];
int head[100003],f[100003];
void make(int x,int y)
{
    cnt++;
    a[cnt].next=head[x];
    a[cnt].to=y;
    head[x]=cnt;
}
void dfs(int x,int fa)
{
	for(int i=head[x];i;i=a[i].next)
	{
		if(a[i].to==fa) continue;
		dfs(a[i].to,x);
		f[x]+=f[a[i].to];
		if(f[x]==k)
		{
			sum++;
			f[x]=0;
			return ;
		}
	}
	return ;
}
int main()
{
	cin>>t;
	while(t--)
	{
		sum=cnt=0;
		cin>>n>>k;
		for(int i=1;i<n;i++)
		{
			cin>>x>>y;
			make(x,y);
			make(y,x);
			f[i]=1;
		}
		f[n]=1;
		if(n%k!=0)
		{
			printf("NO\n");
			continue;
		}
		dfs(1,0);
		if(sum!=n/k) printf("NO\n");
		else printf("YES\n");
		memset(head,0,sizeof(head));
	}
}

蒸乌鱼

2023/3/6 22:02
加载中...