QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#419950 | #8716. 树 | yangyuchen17 | WA | 1ms | 7736kb | C++14 | 2.4kb | 2024-05-24 13:00:26 | 2024-05-24 13:00:26 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=2e5+5,M=2*N;
int n,m,q,b[N],deep[N],f[N][20];
int a[N],c[N];
int h[N],e[N],ne[N],idx;
void add(int u,int v){
e[idx]=v,ne[idx]=h[u],h[u]=idx++;
}
bool vis[N];
void dfs1(int u){
vis[u]=true;
for(int i=h[u];~i;i=ne[i]){
int v=e[i];
if(vis[v]) continue;
deep[v]=deep[u]+1;
f[v][0]=u;
for(int j=1;j<=20;j++) f[v][j]=f[f[v][j-1]][j-1];
dfs1(v);
}
}
int main(){
cin>>n>>m>>q;
memset(h,-1,sizeof h);
a[1]=c[n]=-1;
int u,v,ans=2;
for(int i=1;i<n;i++){
cin>>u>>v;
add(u,v),add(v,u);
}
dfs1(1);
cin>>b[1];
for(int i=2;i<=m;i++){
cin>>b[i];
int x=b[i],y=b[i-1],d=deep[b[i]]-deep[b[i-1]],cnt=0;
if(d<0) d=-d,swap(x,y);
if(d) d--;
else continue;
while(d){
if(d&1) x=f[x][cnt];
d>>=1,cnt++;
}
if(f[x][0]==y){
if(deep[b[i]]>deep[b[i-1]]) c[i-1]=x;
else a[i]=x;
}
}
for(int i=2;i<=m;i++){
if(a[i]==c[i]){
ans++;
//cout<<b[i]<<":"<<a[i]<<" "<<c[i]<<endl;
}
}
//cout<<ans<<endl;
int i;
while(q--){
cin>>i>>u;
b[i]=u;
if(a[i]==c[i]) ans--;
if(i!=n){
if(a[i+1]==c[i+1]) ans--;
int x=b[i+1],y=b[i],d=deep[b[i+1]]-deep[b[i]],cnt=0;
if(d<0) d=-d,swap(x,y);
if(d) d--;
else continue;
while(d){
if(d&1) x=f[x][cnt];
d>>=1,cnt++;
}
if(f[x][0]==y){
if(deep[b[i+1]]>deep[b[i]]) c[i]=x,a[i+1]=0;
else a[i+1]=x,c[i]=0;
}else a[i+1]=c[i]=0;
if(a[i+1]==c[i+1]) ans++;
}
if(i!=1){
if(a[i-1]==c[i-1]) ans--;
int x=b[i],y=b[i-1],d=deep[b[i]]-deep[b[i-1]],cnt=0;
if(d<0) d=-d,swap(x,y);
if(d) d--;
else continue;
while(d){
if(d&1) x=f[x][cnt];
d>>=1,cnt++;
}
if(f[x][0]==y){
if(deep[b[i]]>deep[b[i-1]]) c[i-1]=x,a[i]=0;
else a[i]=x,c[i-1]=0;
}else a[i]=c[i-1]=0;
if(a[i-1]==c[i-1]) ans++;
}
if(a[i]==c[i]) ans++;
cout<<ans<<endl;
/*
for(int i=1;i<=m;i++){
cout<<b[i]<<":"<<a[i]<<" "<<c[i]<<endl;
}
*/
}
return 0;
}
/*
5 5 3
2 1
3 2
1 4
5 1
1 5 4 2 3
1 3
5 3
3 3
*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 7656kb
input:
5 5 3 2 1 3 2 1 4 5 1 1 5 4 2 3 1 3 5 3 3 3
output:
4 4 5
result:
ok 3 number(s): "4 4 5"
Test #2:
score: -100
Wrong Answer
time: 1ms
memory: 7736kb
input:
30 200 200 10 24 10 13 10 26 13 29 27 26 17 24 27 21 17 15 13 5 13 30 27 3 18 21 9 21 2 24 10 4 11 5 2 8 10 23 1 18 21 25 4 20 12 23 22 27 28 27 18 7 13 6 14 30 10 19 16 21 14 29 25 30 1 17 22 21 11 19 21 30 13 1 22 10 14 7 29 7 15 21 25 29 25 7 29 7 1 23 3 17 2 7 4 27 18 26 3 6 5 3 16 26 20 19 16 2...
output:
180 180 180 180 180 179 177 177 177 178 176 176 176 176 174 173 173 172 172 170 170 169 168 166 166 165 165 166 162 161 161 161 159 159 160 161 160 160 157 154 154 155 155 155 152 152 151 151 151 151 151 152 152 153 153 153 153 153 153 153 153 153 153 151 151 151 151 151 151 151 151 151 151 151 148 ...
result:
wrong answer 1st numbers differ - expected: '174', found: '180'