比赛 期末考试1 评测结果 AAAAAAAAAA
题目名称 Output Only 最终得分 100
用户昵称 exil 运行时间 1.223 s
代码语言 C++ 内存使用 15.30 MiB
提交时间 2026-02-08 11:36:27
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define int long long
int a[200005];
vector<int> v[200005];
int fa[200005];
signed main(){
    freopen("tioj_outplay.in","r",stdin);
    freopen("tioj_outplay.out","w",stdout);
    int n,k,Q;
   scanf("%lld%lld%lld",&n,&k,&Q);
    for(int i=1;i<=n;i++){
        scanf("%lld",&a[i]);
    }
    for(int i = 1;i<n;i++){
        int u,v1;
        scanf("%lld%lld",&u,&v1);
        v[u].push_back(v1);
        v[v1].push_back(u);
    }
    
    queue<int> q[2];
    q[0].push(1);
    
    
    while(!q[0].empty()){
        for(int i = 0;i<v[q[0].front()].size();i++){
            if(v[q[0].front()][i]==fa[q[0].front()])continue;
            q[0].push(v[q[0].front()][i]);
            fa[v[q[0].front()][i]]=q[0].front();
            
           
        }
        q[0].pop();
        
    }
    int ans=0;
    for(int i = 1;i<=n;i++){
        if(a[fa[i]]!=a[i])ans++;
    }
    //cout<<ans;
    v[1].push_back(0);
    
    
    
    for(int i = 1;i<=Q;i++){
        int w,x;
        scanf("%lld%lld",&w,&x);
        int r=a[w];
        a[w]=x;
        int hua=0;
        
        for(int j = 0;j<v[w].size();j++){
            //if(v[w][j]==fa[w])continue;
            if(r==a[v[w][j]] && a[w]!=a[v[w][j]])hua++;
            else if(r!=a[v[w][j]] && a[w]==a[v[w][j]])hua--;
        }
        ans+=hua;
        printf("%lld\n",ans);
        
    }
    return 0;
}