记录编号 |
600484 |
评测结果 |
WWTTTTTTTT |
题目名称 |
终末鸟 |
最终得分 |
0 |
用户昵称 |
Ruyi |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
88.910 s |
提交时间 |
2025-05-05 14:27:51 |
内存使用 |
359.34 MiB |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,q,fz1,fz2,fz,ans;
bool lt[10000001],vis[10000001],vv[10000001],flag;
vector<int> v[10000001];
void dfs(int x){
if(vis[x]==1) flag=false;
vis[x]=1;
vv[x]=1;
int m=v[x].size();
cout<<'*'<<m<<endl;
for(int i=0;i<m;i++){
if(lt[v[x][i]]==1&&vv[x]==0) dfs(v[x][i]);
}
return ;
}
/*void dfss(int x,int gl){
if(x==gl)
int m=v[x].size();
for(int i=0;i<m;i++){
if(vis[v[x][i]]==1){
}
}
}*/
int main(){
freopen("birds.in","r",stdin);
freopen("birds.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n;
for(int i=1;i<n;i++){
cin>>fz1>>fz2;
v[fz1].push_back(fz2);
v[fz2].push_back(fz1);
}
for(int i=1;i<=n;i++) cin>>lt[i];
for(int j=1;j<=n;j++){
if(vis[j]==0&<[j]==1){
memset(vv,0,sizeof(vv));
flag=true;
dfs(j);
if(flag) ans++;
}
}
cout<<ans<<endl;
cin>>q;
for(int i=1;i<=q;i++){
cin>>fz;
if(lt[fz]==0){
lt[fz]=1;
vis[fz]=1;
ans++;
int m=v[fz].size();
for(int j=0;j<m;j++){
if(lt[v[fz][j]]==1){
ans--;
break;
}
}
}else{
lt[fz]=!lt[fz];
vis[fz]=!vis[fz];
for(int j=1;j<=n;j++){
if(vis[j]==0&<[j]==1){
memset(vv,0,sizeof(vv));
flag=true;
dfs(j);
if(flag) ans++;
}
}
}
cout<<ans<<endl;
}
return 0;
}