这是问题图片
这是我写的代码,样例测试过了,但是vj上交不上去,这是怎么回事儿啊
c++
#include<bits/stdc++.h>
#include<vector>
#define maxn 100010
using namespace std;
int n,m;
int vertex[maxn];//用于记录该顶点路上是否有猫
int vis[maxn];//用于判断该顶点是否被访问
vector< int >eg[maxn];//用于存边
int number=0;
void dfs(int x,int cont)
{
if(cont>m)//判断是否超过了能忍受的最大数量
return ;
if(eg[x].size()==0)
{
number++;
return ;
}
int i;
for(i=0;i<eg[x].size();i++)
{
int k;
if(vis[eg[x][i]]==0)
{
k=eg[x][i];
if(vertex[k]==1)
dfs(k,cont+1);
else
dfs(k,0);
}
}
}
int main()
{
scanf("%d %d",&n,&m);
int i;
for(i=1;i<=n;i++)
scanf("%d",&vertex[i]);
memset(vis,0,sizeof(vis));
for(i=0;i<n-1;i++)
{
int u,v;
scanf("%d %d",&u,&v);
eg[u].push_back(v);
}
dfs(1,vertex[1]);
printf("%d\n",number);
return 0;
}