| 比赛 |
期末考试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;
}