不出意外的话是0分(全WA)
这是题目
#include<bits/stdc++.h>
using namespace std;
int k[100001],ma,p=1,s;
vector<int>a[100001];
bool v[100001];
void dfs(int x,int deep){
if(ma<deep)ma=deep,p=x;
for(int i=0;i<a[x].size();i++) {
if(v[a[x][i]]==0) {
v[a[x][i]]=1;
if(k[a[x][i]]==1)dfs(a[x][i],deep+1);
else dfs(a[x][i],deep);
}
}
}
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
for(int i=1;i<=n;i++){ cin>>k[i]; if(k[i]==1)s++; }
for(int i=1;i<n;i++) {
int x,y;
cin>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
}
v[1]=1;
dfs(1,1);
for(int i=1;i<=n;i++)v[i]=0;
int y=p;
v[y]=1;
dfs(y,1);
for(int i=1;i<=n;i++)a[i].clear();
for(int i=1;i<=n;i++)v[i]=0;
if(s==ma)cout<<"Yes\n";
else cout<<"No\n";
s=0,ma=0,p=1;
}
return 0;
}