求助 75pts
查看原帖
求助 75pts
507243
你猜你猜楼主2023/5/15 22:00
#include<bits/stdc++.h>
using namespace std;
long long a[114514],father[114514],son[114514],x,y,k,q,m1,n,m,ans,sum=2,m2;
int main()
{
	scanf("%lld%lld",&n,&m);
	for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
	for(int i=1;i<=n-1;i++)scanf("%lld%lld",&x,&y),father[y]=x,son[x]=1;
	for(int i=n;i>=1;i--)
	{
		if(son[i]==0)
		{
			k=i,sum=0,m1=0;
			while(k)
			{
//				q=father[k];
/*				if(a[k]==a[father[k]]&&a[father[k]]==1)sum++;
				if(a[father[k]]==0)
				{
					if(m2==1)m1+=sum;
					m2=0,sum=2;
				}
				if(a[k]==a[father[k]]&&a[k]==1)m2=1;
				k=father[k];*/
				if(a[k]==1)sum++;
				if(a[k]==0)
				{
					if(sum>=2)m1+=sum;
					sum=0;
				}
				k=father[k];//*/
			}
			if(sum>=2)m1+=sum;
			if(m1<=m)ans++;
		}
	}
//	for(int i=2;i<=n;i++)cout<<father[i]<<"\n"; 
	cout<<ans;
}
2023/5/15 22:00
加载中...