社区讨论
爆0,求大佬找错!!!Orz
P3252[JLOI2012] 树参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mi6wmn47
- 此快照首次捕获于
- 2025/11/20 12:01 4 个月前
- 此快照最后确认于
- 2025/11/20 12:01 4 个月前
CPP
#include <iostream>
#define maxN 100010
using namespace std;
int N,M;
int x[maxN];
struct edge {
int son;
int next;
} E[maxN];
int first[maxN],ne;
int iss[maxN]; //是否为son,寻找root;
int root; //根节点;
int ans;
void dfs(int s,int sum);
int main() {
cin>>N>>M;
for(int i=1;i<=N;i++) {
cin>>x[i];
}
int a,b; //b为a的son;
for(int i=1;i<N;i++) { //N-1条边;
cin>>a>>b;
iss[b]=1; //标记为son;
E[++ne]=(edge){b,first[a]};//由father指向son;
first[a]=ne;
}
//find root;
for(int i=1;i<=N;i++) {
if(!iss[i]) { //未成为过son,即是root;
root=i;
break;
}
}
dfs(root,x[root]);
cout<<ans;
return 0;
}
void dfs(int s,int sum) {
int t;
for(int i=first[s];i;i=E[i].next) {
t=E[i].son;
dfs(t,x[t]);
}
if(sum==M) {
ans++;
}
else if(sum<M) {
for(int i=first[s];i;i=E[i].next) {
t=E[i].son;
dfs(t,x[t]+sum);
}
}
return;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...