这玄学复杂度也能过?
  • 板块P3252 [JLOI2012] 树
  • 楼主_lqs_
  • 当前回复13
  • 已保存回复13
  • 发布时间2022/12/21 12:03
  • 上次更新2023/10/24 07:03:19
查看原帖
这玄学复杂度也能过?
664744
_lqs_楼主2022/12/21 12:03
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,i,j,ans,k;
int a[100005],h[1000005*10];
int x,y;
struct AB{
	int a,b,n;
}d[100000];
void cun(int a,int b){
	d[++k].a=a,d[k].b=b;
	d[k].n=h[a],h[a]=k;
}
void dfs(int k,int s){
	if(s>m) return;
	if(s==m){
		ans++;
		return;
	}
	for(int i=h[k];i;i=d[i].n){
		int b=d[i].b;
		dfs(b,s+a[b]);
	}
}
signed main(){
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++) scanf("%d",&a[i]);
	for(i=1;i<n;i++){
		scanf("%d%d",&x,&y);
		cun(x,y);
	}
	for(i=1;i<=n;i++) dfs(i,a[i]);
	printf("%d",ans);
	return 0;
}
2022/12/21 12:03
加载中...