#include<bits/stdc++.h>
using namespace std;
int N,X;
int F[100010] = {0};
int ans = 0;
vector<int> G[100010];
int DFS(int v,int p)
{
int res = 0;
for(int i = 0; i < G[v].size(); i++)if(G[v][i] != p)if(DFS(G[v][i],v)){ans += 2;res = 1;}
if(F[v])res++;
return res;
}
int main()
{
scanf("%d%d",&N,&X);
for(int i = 1; i <= N; i++)scanf("%d",F + i);
for(int i = 0; i < N - 1; i++)
{
int a,b;
scanf("%d%d",&a,&b);
G[a].push_back(b);
G[b].push_back(a);
}
DFS(X,-1);
printf("%d\n",ans);
return 0;
}
./Main.cpp: In function ‘int main()’:
./Main.cpp:19:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d",&N,&X);
^
./Main.cpp:20:49: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
for(int i = 1; i <= N; i++)scanf("%d",F + i);
^
./Main.cpp:24:28: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d",&a,&b);
^