QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#592377 | #837. Giant Penguin | xwh_Marvelous | RE | 55ms | 120632kb | C++14 | 3.0kb | 2024-09-26 22:09:51 | 2024-09-26 22:09:53 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
// #define int long long
//#define mod 1000000007
#define N 200005
#define pii pair<int,int>
#define fi first
#define se second
//#define rep(i,j,k) for(int i=j;i<=k;i++)
int n,m,k,q;
vector<int>mp[N],T[N],at[N];
vector<int>ct[N],lst;
vector<pii>que[N];
int vis[N];
void getT(int x,int fa=0){
vis[x]=1;
for(int v:mp[x]){
if(v==fa)continue;
if(vis[v]){at[x].push_back(v);continue;}
T[v].push_back(x),T[x].push_back(v);getT(v,x);
}
}
int d[12][N];
bool tg[N];
int imp[N][12],bc[N];
int bxhd[N][12];
int ans[N];
int sz[N];
int col[N];
int tot;
int rt;
void gtsz(int x,int fa){
sz[x]=1;
lst.push_back(x);
for(int v:T[x]){
if(v==fa||vis[v])continue;
gtsz(v,x);
sz[x]+=sz[v];
}
}
int gtrt(int x){
lst.clear();
gtsz(x,x);
int ret=0;
function<void(int,int)>find=[&](int u,int fa){
if(sz[x]/2>=sz[u]-1&&sz[x]-sz[u]>=sz[x]/2){ret=u;return;}
for(int v:T[u]){if(fa==v||vis[v])continue;find(v,u);if(ret)return;}
};
find(x,x);
assert(ret);
return ret;
}
void gtd(int s,int *d,int pre){
queue<int>q;
q.push(s);
for(int v:lst)d[v]=-1;
d[s]=0;
while(q.size()){
int u=q.front();q.pop();
for(int v:mp[u]){
// cout<<v<<endl;
if(col[v]<=pre||d[v]!=-1)continue;
d[v]=d[u]+1;
q.push(v);
}
}
}
void stcol(int x,int fa,int op){
// cout<<x<<endl;
col[x]=op;
for(int v:T[x]){
if(v==fa||vis[v])continue;
stcol(v,x,op);
}
}
void sol(int x,vector<pii>&qwq){
// cout<<x<<endl;
// for(auto op:qwq)cout<<op.fi<<' '<<op.se<<endl;cout<<endl;
vis[x]=1;
int pre=tot;
col[x]=pre+1;
for(int v:T[x]){if(vis[v])continue;stcol(v,v,++tot);}
imp[x][++bc[x]]=x;
gtd(x,d[1],pre);
for(int v:lst){
for(int u:at[v]){
// cout<<u<<' '<<v<<endl;
if(col[u]<=pre||col[u]==col[v])continue;
imp[x][++bc[x]]=v;
gtd(v,d[bc[x]],pre);
}
}
for(auto w:qwq){
int op=w.fi,v=w.se;
// cout<<op<<' '<<v<<endl;
if(op==1){
for(int i=1;i<=bc[x];i++){
bxhd[x][i]=min(bxhd[x][i],d[i][v]);
}
}else{
for(int i=1;i<=bc[x];i++){
ans[op]=min(ans[op],bxhd[x][i]+d[i][v]);
}
}
if(v!=x){
// cout<<col[v]<<endl;
que[col[v]].push_back(w);
}
}
qwq.clear();
int g=0;
for(int v:T[x]){
if(vis[v])continue;
g++;
int rt=gtrt(v);
// if(rt==8)cout<<pre+g<<' '<<tot<<endl;
sol(rt,que[pre+g]);
}
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m>>k;
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
mp[u].push_back(v),mp[v].push_back(u);
}
getT(1);
memset(vis,0,sizeof(vis));
memset(bxhd,0x3f,sizeof(bxhd));
memset(ans,0x3f,sizeof(ans));
cin>>q;
for(int i=1;i<=q;i++){
int op,v;
cin>>op>>v;
if(op==1&&tg[v])continue;
if(op==1)tg[v]=1;
if(op==1)que[0].push_back({op,v});
else que[0].push_back({i,v});
}
// for(auto op:que[0])cout<<op.fi<<' '<<op.se<<endl;
rt=gtrt(1);
sol(rt,que[0]);
for(int i=1;i<=q;i++){
if(ans[i]>1e9)continue;
cout<<ans[i]<<'\n';
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 41852kb
input:
5 4 0 1 2 2 3 3 4 4 5 7 1 1 1 5 2 1 2 2 2 3 2 4 2 5
output:
0 1 2 1 0
result:
ok 5 number(s): "0 1 2 1 0"
Test #2:
score: 0
Accepted
time: 0ms
memory: 40408kb
input:
5 6 2 1 2 2 3 1 3 3 4 4 5 3 5 3 1 1 2 4 2 5
output:
2 2
result:
ok 2 number(s): "2 2"
Test #3:
score: 0
Accepted
time: 27ms
memory: 51380kb
input:
100 99 0 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 52...
output:
99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 99 98 97 9...
result:
ok 199968 numbers
Test #4:
score: 0
Accepted
time: 55ms
memory: 120632kb
input:
100 99 0 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 30 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 40 1 41 1 42 1 43 1 44 1 45 1 46 1 47 1 48 1 49 1 50 1 51 1 52 1 53 1 54 1 55 1 56 1 57 1 58 1 59 1 60 1 61...
output:
1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 199966 numbers
Test #5:
score: 0
Accepted
time: 43ms
memory: 83968kb
input:
100 99 0 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 2 25 1 26 1 27 1 28 2 29 1 30 1 31 1 32 1 33 2 34 1 35 1 36 2 37 1 38 4 39 1 40 1 41 2 42 2 43 1 44 1 45 2 46 1 47 1 48 1 49 2 50 2 51 1 52 1 53 1 54 2 55 3 56 2 57 1 58 2 59 2 60 3 61...
output:
2 3 3 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 3 3 3 4 3 3 3 3 4 3 3 4 3 2 3 3 4 4 3 3 4 3 3 3 4 4 3 3 3 4 4 4 3 4 4 4 3 3 4 3 3 3 4 4 4 3 3 3 3 3 4 3 3 3 3 3 3 3 3 3 3 4 4 3 0 3 3 4 3 4 3 3 4 3 4 2 3 3 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 3 3 3 4 3 3 3 3 4 3 3 4 3 2 3 3 4 4 3 3 4 3 3 3 4 ...
result:
ok 199964 numbers
Test #6:
score: 0
Accepted
time: 27ms
memory: 65300kb
input:
100 99 0 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 28 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 39 41 41 42 41 43 41 44 44 45 44 46 46 47 44 48 48 49 48 50 50 51 50 52 51...
output:
68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 42 40 39 38 37 36 35 34 33 32 31 32 30 31 31 29 30 30 31 28 29 27 28 26 29 25 24 23 24 22 25 26 21 22 23 20 19 20 18 17 18 16 15 14 16 13 14 15 12 16 11 10 9 10 8 16 7 6 5 6 7 4 7 8 9 10 11 3 10 2 1 0 68 67 66 65 64 ...
result:
ok 199966 numbers
Test #7:
score: 0
Accepted
time: 20ms
memory: 55284kb
input:
100 102 10 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 52 ...
output:
24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 37 36 35 34 33 32 31 30 29 28 27 26 25 26 27 28 29 30 31 32 33 34 35 36 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 1...
result:
ok 199973 numbers
Test #8:
score: 0
Accepted
time: 22ms
memory: 59404kb
input:
75 102 10 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 1 1 19 13 25 1 26 26 27 27 1 2 28 28 29 29 2 3 30 30 31 31 3 4 32 32 33 33 4 5 34 34 35 35 5 6 36 36 37 37 6 7 38 38 39 39 7 8 40 40 41 41 8 9 42 42 43 43 9 10 ...
output:
6 5 4 3 2 1 2 3 4 5 6 7 8 9 10 10 9 8 7 8 9 10 9 8 7 7 7 6 6 5 5 4 4 3 3 1 0 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 11 11 10 10 9 9 8 8 9 9 10 10 11 11 10 10 9 9 8 8 6 5 4 3 2 1 2 3 4 5 6 7 8 9 10 10 9 8 7 8 9 10 9 8 7 7 7 6 6 5 5 4 4 3 3 1 0 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 11 11 10 10 9 9 ...
result:
ok 199971 numbers
Test #9:
score: 0
Accepted
time: 35ms
memory: 69588kb
input:
100 174 6 1 2 1 3 1 4 2 3 2 4 3 4 5 6 5 7 5 8 6 7 6 8 7 8 9 10 9 11 9 12 10 11 10 12 11 12 13 14 13 15 13 16 14 15 14 16 15 16 17 18 17 19 17 20 18 19 18 20 19 20 21 22 21 23 21 24 22 23 22 24 23 24 25 26 25 27 25 28 26 27 26 28 27 28 29 30 29 31 29 32 30 31 30 32 31 32 33 34 33 35 33 36 34 35 34 36...
output:
1 1 0 1 3 2 3 3 5 5 5 4 7 7 6 7 9 9 9 8 10 11 11 11 13 13 12 13 13 14 14 14 15 16 16 16 18 18 17 18 19 20 20 20 19 18 19 19 20 21 21 21 20 19 20 20 22 21 22 22 22 22 21 22 22 22 22 21 24 24 23 24 24 24 23 24 25 26 26 26 25 24 25 25 26 25 26 26 26 26 26 25 27 27 27 26 27 27 27 26 1 1 0 1 3 2 3 3 5 5 ...
result:
ok 199981 numbers
Test #10:
score: 0
Accepted
time: 34ms
memory: 62368kb
input:
100 118 6 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 1 2 9 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 11 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 21 22 25 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 31 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 4...
output:
31 30 31 32 33 34 33 32 31 32 26 27 28 29 30 31 30 29 28 27 32 31 30 31 32 33 34 35 34 33 26 27 26 25 24 23 22 23 24 25 20 21 21 20 21 21 20 19 18 19 12 13 14 15 16 17 16 15 14 13 10 11 10 9 8 7 6 7 8 9 24 24 23 24 23 22 21 22 23 24 1 0 1 2 3 4 5 4 3 2 26 27 28 27 26 27 26 25 24 25 31 30 31 32 33 34...
result:
ok 199963 numbers
Test #11:
score: 0
Accepted
time: 33ms
memory: 64972kb
input:
100 119 6 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 1 2 5 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 11 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 21 26 30 22 24 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 31 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 5...
output:
1 2 3 4 3 4 3 2 1 0 9 8 7 6 5 6 7 8 9 10 8 9 10 10 9 8 8 7 6 7 13 12 11 10 11 12 13 14 15 14 13 14 15 16 15 16 17 16 15 14 17 16 15 16 15 14 13 14 15 16 20 19 18 17 18 19 19 18 19 20 17 17 18 18 17 16 15 14 15 16 18 19 20 19 18 17 18 17 16 17 21 22 23 24 25 24 23 22 21 20 1 2 3 4 3 4 3 2 1 0 9 8 7 6...
result:
ok 199976 numbers
Test #12:
score: 0
Accepted
time: 30ms
memory: 60868kb
input:
100 119 6 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 1 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 11 13 19 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 21 24 26 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 31 35 38 31 33 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48...
output:
3 2 1 0 1 2 3 4 5 4 10 10 9 9 8 7 6 7 8 9 11 12 12 11 11 10 9 8 9 10 15 16 15 14 13 12 11 12 13 14 17 16 15 14 13 12 13 14 15 16 21 21 20 20 19 18 17 18 19 20 21 22 23 22 21 20 19 18 19 20 23 22 21 22 23 24 23 22 23 24 27 26 25 24 23 24 25 26 27 27 28 29 30 31 32 33 32 31 30 29 3 2 1 0 1 2 3 4 5 4 1...
result:
ok 199969 numbers
Test #13:
score: -100
Runtime Error
input:
84 123 10 1 2 1 3 2 3 1 4 1 5 4 5 1 6 1 7 6 7 1 8 1 9 8 9 1 10 1 11 10 11 1 12 1 13 12 13 1 14 1 15 14 15 1 16 1 17 16 17 1 18 1 19 18 19 1 20 1 21 20 21 22 23 22 24 23 24 22 25 22 26 25 26 22 27 22 28 27 28 22 29 22 30 29 30 22 31 22 32 31 32 22 33 22 34 33 34 22 35 22 36 35 36 22 37 22 38 37 38 22...