无锅代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<string>
#include<queue>
#include<map>
#include<vector>
#include<ctime>
#include<set>
#include<cctype>
#define INF 0x7fffffff
#define ll long long
#define IL inline
#define R register
using namespace std;
struct node{
int u,v;
}fuck[100007];
int head[100007];
int fa[100007];
int x,y;
int w[100007];
int n,s;
int tot=0;
int ans=0;
int sum=0;
IL void read(int &x)
{
int f=1;x=0;char s=getchar();
while (s<'0'||s>'9')
{
if(s=='-')
f=-1;
s=getchar();
}
while (s>='0'&&s<='9')
{
x=x*10+s-'0';
s=getchar();
}
x*=f;
}
void add(int x,int y)
{
fuck[++tot].u=head[x];//++?
fuck[tot].v=y;
head[x]=tot;
}
IL void dfs(int x,int dis)
{
if(dis>s)
return;
if(dis==s)
{
ans++;
return;
}
for(int i=head[x];i;i=fuck[i].u)
{
int nxt=fuck[i].v;
if(fa[x]!=nxt)
dfs(nxt,dis+w[nxt]);
}
}
int main()
{
read(n);read(s);
for(int i=1;i<=n;i++)
{
cin>>w[i];
}
for(int i=1;i<=n-1;i++)
{
cin>>x>>y;
add(x,y);
fa[y]=x;
}
for(int i=1;i<=n;i++)
{
dfs(i,w[i]);
}
cout<<ans<<endl;
return 0;
}
如果生成一颗树高 103,且儿子数量尽量平均的树,是否可以 hack 掉这个代码?