#include <bits/stdc++.h>
using namespace std;
int P[120001][17];
int lola[120001][17];
int lolb[120001][17];
int lolc[120001],dep[120001];
vector<int> adj[120001],tree[120005+120000*17];
int deg[120005+120000*17] = {0};
void dfs(int i,int pr){
P[i][0] = pr;
dep[i] = dep[pr]+1;
for(int j = 1;j<17;j++){
P[i][j] = P[P[i][j-1]][j-1];
}
for(auto j:adj[i]){
if(j==pr)continue;
dfs(j,i);
}
}
int go(int x,int len){
for(int i = 16;i>=0;i--){
if(len>=(1<<i)){
x = P[x][i];
len-=(1<<i);
}
}
return x;
}
signed main(){
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//freopen("input.txt","r",stdin);
//freopen("out.txt","w",stdout);
int t;cin>>t;while(t--){
int n;
cin>>n;
for(int i = 1;i<=n;i++){
adj[i].clear();
}
for(int i = 1;i<n;i++){
int a,b;
cin>>a>>b;
adj[a].push_back(b);
adj[b].push_back(a);
}
int q;cin>>q;
vector<pair<int,int>> v;v.push_back({0,0});
for(int i = 1;i<=q;i++){
int a,b;cin>>a>>b;
v.push_back({a,b});
}
dfs(1,0);
int NODES = 0;
for(int i = 1;i<=q;i++){
lolc[i] = ++NODES;
//cout<<lolc[i]<<endl;
}
for(int i = 1;i<=n;i++){
for(int j = 0;j<=log2(n);j++){
lola[i][j] = ++NODES;
lolb[i][j] = ++NODES;
}
}
for(int i = 1;i<=n;i++){
for(int j = 1;j<=log2(n);j++){
tree[lolb[i][j]].push_back(lolb[i][j-1]);
tree[lolb[i][j]].push_back(lolb[P[i][j-1]][j-1]);
tree[lola[i][j-1]].push_back(lola[i][j]);
tree[lola[P[i][j-1]][j-1]].push_back(lola[i][j]);
}
}
//cout<<tree[0].size()<<endl;
for(int i = 1;i<=q;i++){
tree[lolc[i]].push_back(lola[v[i].first][0]);
tree[lolb[v[i].second][0]].push_back(lolc[i]);
}
for(int i = 1;i<=q;i++){
int x,y;
x = v[i].first , y = v[i].second;
if(dep[x]>dep[y]&&go(x,dep[x]-dep[y])==y){
y=go(x,dep[x]-dep[y]-1);
}else y = P[y][0];
//cout<<x<<" "<<y<<endl;
if(dep[x]<dep[y])swap(x,y);
for(int j =log2(n);j>=0;j--){
if(dep[x]-(1<<j)>=dep[y]){
tree[lolc[i]].push_back(lolb[x][j]);
x = P[x][j];
}
}
for(int j = log2(n);j>=0;j--){
if(P[x][j]!=P[y][j]){
tree[lolc[i]].push_back(lolb[x][j]);
tree[lolc[i]].push_back(lolb[y][j]);
x = P[x][j];y = P[y][j];
}
}
tree[lolc[i]].push_back(lolb[x][0]);
if(x!=y)tree[lolc[i]].push_back(lolb[y][1]);
x = v[i].first , y = v[i].second;
if(dep[y]>dep[x]&&go(y,dep[y]-dep[x])==x){
x=go(y,dep[y]-dep[x]-1);
}else x = P[x][0];
if(dep[x]<dep[y])swap(x,y);
for(int j = log2(n);j>=0;j--){
if(dep[x]-(1<<j)>=dep[y]){
tree[lola[x][j]].push_back(lolc[i]);
x = P[x][j];
}
}
for(int j =log2(n);j>=0;j--){
if(P[x][j]!=P[y][j]){
tree[lola[x][j]].push_back(lolc[i]);
tree[lola[y][j]].push_back(lolc[i]);
x = P[x][j];y = P[y][j];
}
}
tree[lola[x][0]].push_back(lolc[i]);
if(x!=y){tree[lola[y][1]].push_back(lolc[i]);}
}
//cout<<"ggg"<<endl;
tree[0].clear();
for(int i = 0;i<=NODES;i++){
for(auto j:tree[i]){
//if(j>NODES||j==0)assert(0);
deg[j]++;
}
}
queue<int> qe;
for(int i = 0;i<=NODES;i++){
if(deg[i]==0){
qe.push(i);
}
}
int cnt = 0;
while(!qe.empty()){
int x = qe.front();qe.pop();
cnt++;
for(auto j:tree[x]){
deg[j]--;
if(deg[j]==0)qe.push(j);
}
}
for(int i = 0;i<=NODES;i++){
//cout<<vis[i]<<" "<<i<<endl;
}
if(cnt==NODES+1)cout<<"Yes\n";
else cout<<"No\n";
for(int i = 0;i<=NODES;i++){tree[i].clear();deg[i] = 0;}
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
12 ms |
59736 KB |
Output is correct |
2 |
Correct |
12 ms |
59740 KB |
Output is correct |
3 |
Correct |
12 ms |
59972 KB |
Output is correct |
4 |
Correct |
38 ms |
59992 KB |
Output is correct |
5 |
Correct |
66 ms |
59996 KB |
Output is correct |
6 |
Correct |
15 ms |
60112 KB |
Output is correct |
7 |
Correct |
15 ms |
59996 KB |
Output is correct |
8 |
Correct |
16 ms |
60136 KB |
Output is correct |
9 |
Correct |
144 ms |
67380 KB |
Output is correct |
10 |
Runtime error |
411 ms |
312336 KB |
Execution killed with signal 11 |
11 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
12 ms |
59736 KB |
Output is correct |
2 |
Correct |
12 ms |
59740 KB |
Output is correct |
3 |
Correct |
15 ms |
59996 KB |
Output is correct |
4 |
Correct |
16 ms |
59996 KB |
Output is correct |
5 |
Correct |
16 ms |
59996 KB |
Output is correct |
6 |
Correct |
16 ms |
59932 KB |
Output is correct |
7 |
Correct |
15 ms |
59996 KB |
Output is correct |
8 |
Correct |
15 ms |
59996 KB |
Output is correct |
9 |
Correct |
16 ms |
59996 KB |
Output is correct |
10 |
Correct |
16 ms |
59996 KB |
Output is correct |
11 |
Correct |
15 ms |
60140 KB |
Output is correct |
12 |
Correct |
15 ms |
60252 KB |
Output is correct |
13 |
Correct |
13 ms |
59996 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
12 ms |
59736 KB |
Output is correct |
2 |
Correct |
12 ms |
59740 KB |
Output is correct |
3 |
Correct |
15 ms |
59996 KB |
Output is correct |
4 |
Correct |
16 ms |
59996 KB |
Output is correct |
5 |
Correct |
16 ms |
59996 KB |
Output is correct |
6 |
Correct |
16 ms |
59932 KB |
Output is correct |
7 |
Correct |
15 ms |
59996 KB |
Output is correct |
8 |
Correct |
15 ms |
59996 KB |
Output is correct |
9 |
Correct |
16 ms |
59996 KB |
Output is correct |
10 |
Correct |
16 ms |
59996 KB |
Output is correct |
11 |
Correct |
15 ms |
60140 KB |
Output is correct |
12 |
Correct |
15 ms |
60252 KB |
Output is correct |
13 |
Correct |
13 ms |
59996 KB |
Output is correct |
14 |
Correct |
12 ms |
59736 KB |
Output is correct |
15 |
Correct |
12 ms |
59740 KB |
Output is correct |
16 |
Correct |
18 ms |
60116 KB |
Output is correct |
17 |
Correct |
16 ms |
59992 KB |
Output is correct |
18 |
Correct |
16 ms |
59996 KB |
Output is correct |
19 |
Correct |
12 ms |
59736 KB |
Output is correct |
20 |
Correct |
16 ms |
60136 KB |
Output is correct |
21 |
Correct |
17 ms |
60112 KB |
Output is correct |
22 |
Correct |
15 ms |
59996 KB |
Output is correct |
23 |
Correct |
12 ms |
59740 KB |
Output is correct |
24 |
Correct |
13 ms |
60004 KB |
Output is correct |
25 |
Correct |
16 ms |
59924 KB |
Output is correct |
26 |
Correct |
13 ms |
59992 KB |
Output is correct |
27 |
Correct |
15 ms |
59920 KB |
Output is correct |
28 |
Correct |
12 ms |
59832 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
12 ms |
59736 KB |
Output is correct |
2 |
Correct |
12 ms |
59740 KB |
Output is correct |
3 |
Correct |
15 ms |
59996 KB |
Output is correct |
4 |
Correct |
16 ms |
59996 KB |
Output is correct |
5 |
Correct |
16 ms |
59996 KB |
Output is correct |
6 |
Correct |
16 ms |
59932 KB |
Output is correct |
7 |
Correct |
15 ms |
59996 KB |
Output is correct |
8 |
Correct |
15 ms |
59996 KB |
Output is correct |
9 |
Correct |
16 ms |
59996 KB |
Output is correct |
10 |
Correct |
16 ms |
59996 KB |
Output is correct |
11 |
Correct |
15 ms |
60140 KB |
Output is correct |
12 |
Correct |
15 ms |
60252 KB |
Output is correct |
13 |
Correct |
13 ms |
59996 KB |
Output is correct |
14 |
Correct |
12 ms |
59736 KB |
Output is correct |
15 |
Correct |
12 ms |
59740 KB |
Output is correct |
16 |
Correct |
18 ms |
60116 KB |
Output is correct |
17 |
Correct |
16 ms |
59992 KB |
Output is correct |
18 |
Correct |
16 ms |
59996 KB |
Output is correct |
19 |
Correct |
12 ms |
59736 KB |
Output is correct |
20 |
Correct |
16 ms |
60136 KB |
Output is correct |
21 |
Correct |
17 ms |
60112 KB |
Output is correct |
22 |
Correct |
15 ms |
59996 KB |
Output is correct |
23 |
Correct |
12 ms |
59740 KB |
Output is correct |
24 |
Correct |
13 ms |
60004 KB |
Output is correct |
25 |
Correct |
16 ms |
59924 KB |
Output is correct |
26 |
Correct |
13 ms |
59992 KB |
Output is correct |
27 |
Correct |
15 ms |
59920 KB |
Output is correct |
28 |
Correct |
12 ms |
59832 KB |
Output is correct |
29 |
Correct |
16 ms |
59996 KB |
Output is correct |
30 |
Correct |
17 ms |
60176 KB |
Output is correct |
31 |
Correct |
16 ms |
59996 KB |
Output is correct |
32 |
Correct |
16 ms |
59996 KB |
Output is correct |
33 |
Correct |
18 ms |
60132 KB |
Output is correct |
34 |
Correct |
16 ms |
60252 KB |
Output is correct |
35 |
Correct |
16 ms |
59996 KB |
Output is correct |
36 |
Correct |
15 ms |
59996 KB |
Output is correct |
37 |
Correct |
14 ms |
59996 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
12 ms |
59736 KB |
Output is correct |
2 |
Correct |
12 ms |
59740 KB |
Output is correct |
3 |
Correct |
15 ms |
59996 KB |
Output is correct |
4 |
Correct |
16 ms |
59996 KB |
Output is correct |
5 |
Correct |
16 ms |
59996 KB |
Output is correct |
6 |
Correct |
16 ms |
59932 KB |
Output is correct |
7 |
Correct |
15 ms |
59996 KB |
Output is correct |
8 |
Correct |
15 ms |
59996 KB |
Output is correct |
9 |
Correct |
16 ms |
59996 KB |
Output is correct |
10 |
Correct |
16 ms |
59996 KB |
Output is correct |
11 |
Correct |
15 ms |
60140 KB |
Output is correct |
12 |
Correct |
15 ms |
60252 KB |
Output is correct |
13 |
Correct |
13 ms |
59996 KB |
Output is correct |
14 |
Correct |
12 ms |
59736 KB |
Output is correct |
15 |
Correct |
12 ms |
59740 KB |
Output is correct |
16 |
Correct |
18 ms |
60116 KB |
Output is correct |
17 |
Correct |
16 ms |
59992 KB |
Output is correct |
18 |
Correct |
16 ms |
59996 KB |
Output is correct |
19 |
Correct |
12 ms |
59736 KB |
Output is correct |
20 |
Correct |
16 ms |
60136 KB |
Output is correct |
21 |
Correct |
17 ms |
60112 KB |
Output is correct |
22 |
Correct |
15 ms |
59996 KB |
Output is correct |
23 |
Correct |
12 ms |
59740 KB |
Output is correct |
24 |
Correct |
13 ms |
60004 KB |
Output is correct |
25 |
Correct |
16 ms |
59924 KB |
Output is correct |
26 |
Correct |
13 ms |
59992 KB |
Output is correct |
27 |
Correct |
15 ms |
59920 KB |
Output is correct |
28 |
Correct |
12 ms |
59832 KB |
Output is correct |
29 |
Correct |
16 ms |
59996 KB |
Output is correct |
30 |
Correct |
17 ms |
60176 KB |
Output is correct |
31 |
Correct |
16 ms |
59996 KB |
Output is correct |
32 |
Correct |
16 ms |
59996 KB |
Output is correct |
33 |
Correct |
18 ms |
60132 KB |
Output is correct |
34 |
Correct |
16 ms |
60252 KB |
Output is correct |
35 |
Correct |
16 ms |
59996 KB |
Output is correct |
36 |
Correct |
15 ms |
59996 KB |
Output is correct |
37 |
Correct |
14 ms |
59996 KB |
Output is correct |
38 |
Correct |
133 ms |
67408 KB |
Output is correct |
39 |
Runtime error |
368 ms |
312424 KB |
Execution killed with signal 11 |
40 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
12 ms |
59904 KB |
Output is correct |
2 |
Correct |
13 ms |
59740 KB |
Output is correct |
3 |
Correct |
12 ms |
59740 KB |
Output is correct |
4 |
Correct |
12 ms |
59740 KB |
Output is correct |
5 |
Correct |
22 ms |
59740 KB |
Output is correct |
6 |
Correct |
16 ms |
59996 KB |
Output is correct |
7 |
Correct |
15 ms |
59996 KB |
Output is correct |
8 |
Correct |
13 ms |
59996 KB |
Output is correct |
9 |
Correct |
12 ms |
59740 KB |
Output is correct |
10 |
Correct |
12 ms |
60044 KB |
Output is correct |
11 |
Correct |
12 ms |
59992 KB |
Output is correct |
12 |
Correct |
15 ms |
59992 KB |
Output is correct |
13 |
Correct |
50 ms |
60076 KB |
Output is correct |
14 |
Correct |
83 ms |
60048 KB |
Output is correct |
15 |
Correct |
65 ms |
59992 KB |
Output is correct |
16 |
Runtime error |
356 ms |
306348 KB |
Execution killed with signal 6 |
17 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
12 ms |
59736 KB |
Output is correct |
2 |
Correct |
12 ms |
59740 KB |
Output is correct |
3 |
Correct |
12 ms |
59972 KB |
Output is correct |
4 |
Correct |
38 ms |
59992 KB |
Output is correct |
5 |
Correct |
66 ms |
59996 KB |
Output is correct |
6 |
Correct |
15 ms |
60112 KB |
Output is correct |
7 |
Correct |
15 ms |
59996 KB |
Output is correct |
8 |
Correct |
16 ms |
60136 KB |
Output is correct |
9 |
Correct |
144 ms |
67380 KB |
Output is correct |
10 |
Runtime error |
411 ms |
312336 KB |
Execution killed with signal 11 |
11 |
Halted |
0 ms |
0 KB |
- |