比赛 期末考试1 评测结果 ATAATTTTTT
题目名称 Output Only 最终得分 30
用户昵称 汐汐很希希 运行时间 7.992 s
代码语言 C++ 内存使用 10.59 MiB
提交时间 2026-02-08 09:23:01
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2e5+10;
const int M=2e5+10;
const int MOD=1e9+7;
const int MAXX=2e9;
int n,k,q;
int c[N];
vector<int> g[N];
void add(int u,int v){
	g[u].push_back(v);
	return;
}
void solve1(){
	while(q--){
		int w,x,ans=0;
		cin>>w>>x;
		c[w]=x;
		if(c[1]!=0) ans++;
		for(int i=2;i<=n;i++){
			if(c[i]==c[i-1]) continue;
			else ans++;
		}
		cout<<ans<<endl;
	}
}
int dfs(int u)
{
	int ans=0;
	for(int i=0;i<g[u].size();i++){
		int v=g[u][i];
		if(c[v]!=c[u]) ans++;
		ans+=dfs(v);
	}
	return ans;
}
void solve2(){
	while(q--){
		int w,x,ans=0;
		cin>>w>>x;
		c[w]=x;
		ans=dfs(1);
		if(c[1]!=0) ans++;
		cout<<ans<<endl;
	} 
}
void solve3(){
	while(q--){
		int w,x,ans=0;
		cin>>w>>x;
		c[w]=x;
		ans=dfs(1);
		if(c[1]!=0) ans++;
		cout<<ans<<endl;
	}
}
int main()
{
    freopen("tioj_outplay.in","r",stdin);
    freopen("tioj_outplay.out","w",stdout);
    
    cin>>n>>k>>q;
    for(int i=1;i<=n;i++) cin>>c[i];
	bool flag=true;
    for(int i=1;i<n;i++){
    	int u,v;
    	cin>>u>>v; 
    	add(u,v);
    	if(u!=i||v!=i+1) flag=false;
	}
	if(flag) solve1();
	else if(k==2) solve2();
	else solve3();
	return 0;
}