Submission #59471323
Source Code Expand
#include<bits/stdc++.h>
#include"atcoder/all"
using namespace std;
using namespace atcoder;
#define rep(i,n) for(int i=0;i<n;i++)
#define all(a) a.begin(),a.end()
typedef long long ll;
typedef vector<ll> vi;
typedef pair<int,int> P;
constexpr ll mod = 998244353;
typedef modint998244353 mi;
struct S{
long long val,idx;
};
S op(S x,S y){
if(x.val>y.val)return y;
return x;
}
S e() {
return {LLONG_MAX,-1};
}
struct LCA{
int N;
vector<int>vs,depth,id,id_depth;
vector<vector<int>> G;
segtree<S,op,e> seg;
LCA(int n,vector<vector<int>>&g){
N=n;
G=g;
vs.resize(2*N-1);//DFSでの訪問順
depth.resize(2*N-1);// 訪問順での根からの深さ
id.resize(N); //id[i]:iが初めて現れるindex
id_depth.resize(N);
seg=segtree<S,op,e>(2*N-1);
int k=0;
dfs(0,-1,0,k);
rep(i,2*N-1){
seg.set(i,{depth[i],i});
}
}
int lca(int u,int v){
return vs[seg.prod(min(id[u],id[v]),max(id[u],id[v])+1).idx];
}
void dfs(int now,int par,int d,int& k){
id[now]=k;
id_depth[now]=d;
vs[k]=now;
depth[k++]=d;
for(auto e:G[now]){
if(e==par)continue;
dfs(e,now,d+1,k);
vs[k]=now;
depth[k++]=d;
}
}
};
int main(){
int n;cin>>n;
vector<vector<int>>G(n);
rep(i,n-1){
int a,b;
cin>>a>>b;
a--;b--;
G[a].push_back(b);
G[b].push_back(a);
}
LCA LCA(n,G);
int q;cin>>q;
rep(Q,q){
int K;cin>>K;
vector<P>V(K);
rep(i,K){
int v;cin>>v;v--;
V[i]={LCA.id[v],v};
}
sort(all(V));
V.push_back(V[0]);
long long sum=0;
rep(i,K){
int w=LCA.lca(V[i].second,V[i+1].second);
sum+=LCA.id_depth[V[i].second]+LCA.id_depth[V[i+1].second]-2*LCA.id_depth[w];
}
sum/=2;
cout<<sum<<endl;
}
}
Submission Info
Submission Time |
|
Task |
035 - Preserve Connectivity(★7) |
User |
Rho17 |
Language |
C++ 20 (gcc 12.2) |
Score |
7 |
Code Size |
2105 Byte |
Status |
AC |
Exec Time |
257 ms |
Memory |
28620 KiB |
Judge Result
Set Name |
Sample |
Subtask1 |
Subtask2 |
Subtask3 |
Subtask4 |
Score / Max Score |
0 / 0 |
2 / 2 |
1 / 1 |
1 / 1 |
3 / 3 |
Status |
|
|
|
|
|
Set Name |
Test Cases |
Sample |
sample_01.txt, sample_02.txt, sample_03.txt |
Subtask1 |
sub1_01.txt, sub1_02.txt, sub1_03.txt, sub1_04.txt, sub1_05.txt, sub1_06.txt, sub1_07.txt, sub1_08.txt, sub1_09.txt, sub1_10.txt, sub1_11.txt, sample_01.txt, sample_02.txt, sample_03.txt |
Subtask2 |
sub2_01.txt, sub2_02.txt, sub2_03.txt, sub2_04.txt, sub2_05.txt, sub2_06.txt, sub2_07.txt, sub2_08.txt, sample_02.txt, sub1_01.txt |
Subtask3 |
sub3_01.txt, sub3_02.txt, sub3_03.txt, sub3_04.txt, sub3_05.txt, sub3_06.txt, sub3_07.txt, sub3_08.txt, sample_03.txt |
Subtask4 |
sample_01.txt, sample_02.txt, sample_03.txt, sub1_01.txt, sub1_02.txt, sub1_03.txt, sub1_04.txt, sub1_05.txt, sub1_06.txt, sub1_07.txt, sub1_08.txt, sub1_09.txt, sub1_10.txt, sub1_11.txt, sub2_01.txt, sub2_02.txt, sub2_03.txt, sub2_04.txt, sub2_05.txt, sub2_06.txt, sub2_07.txt, sub2_08.txt, sub3_01.txt, sub3_02.txt, sub3_03.txt, sub3_04.txt, sub3_05.txt, sub3_06.txt, sub3_07.txt, sub3_08.txt, sub4_01.txt, sub4_02.txt, sub4_03.txt, sub4_04.txt, sub4_05.txt, sub4_06.txt, sub4_07.txt, sub4_08.txt, sub4_09.txt, sub4_10.txt, sub4_11.txt, sub4_12.txt |
Case Name |
Status |
Exec Time |
Memory |
sample_01.txt |
AC |
1 ms |
3508 KiB |
sample_02.txt |
AC |
1 ms |
3504 KiB |
sample_03.txt |
AC |
1 ms |
3536 KiB |
sub1_01.txt |
AC |
1 ms |
3504 KiB |
sub1_02.txt |
AC |
1 ms |
3540 KiB |
sub1_03.txt |
AC |
1 ms |
3532 KiB |
sub1_04.txt |
AC |
57 ms |
4532 KiB |
sub1_05.txt |
AC |
47 ms |
4420 KiB |
sub1_06.txt |
AC |
57 ms |
4416 KiB |
sub1_07.txt |
AC |
57 ms |
4420 KiB |
sub1_08.txt |
AC |
57 ms |
4520 KiB |
sub1_09.txt |
AC |
55 ms |
4492 KiB |
sub1_10.txt |
AC |
52 ms |
4572 KiB |
sub1_11.txt |
AC |
53 ms |
4480 KiB |
sub2_01.txt |
AC |
250 ms |
28016 KiB |
sub2_02.txt |
AC |
245 ms |
27960 KiB |
sub2_03.txt |
AC |
247 ms |
27920 KiB |
sub2_04.txt |
AC |
257 ms |
27756 KiB |
sub2_05.txt |
AC |
250 ms |
28112 KiB |
sub2_06.txt |
AC |
253 ms |
27668 KiB |
sub2_07.txt |
AC |
230 ms |
28488 KiB |
sub2_08.txt |
AC |
248 ms |
27700 KiB |
sub3_01.txt |
AC |
214 ms |
28052 KiB |
sub3_02.txt |
AC |
213 ms |
27968 KiB |
sub3_03.txt |
AC |
213 ms |
27968 KiB |
sub3_04.txt |
AC |
220 ms |
27640 KiB |
sub3_05.txt |
AC |
221 ms |
27908 KiB |
sub3_06.txt |
AC |
224 ms |
27704 KiB |
sub3_07.txt |
AC |
194 ms |
28620 KiB |
sub3_08.txt |
AC |
215 ms |
27712 KiB |
sub4_01.txt |
AC |
145 ms |
28004 KiB |
sub4_02.txt |
AC |
127 ms |
27972 KiB |
sub4_03.txt |
AC |
121 ms |
27880 KiB |
sub4_04.txt |
AC |
148 ms |
27976 KiB |
sub4_05.txt |
AC |
130 ms |
28024 KiB |
sub4_06.txt |
AC |
123 ms |
27996 KiB |
sub4_07.txt |
AC |
129 ms |
28536 KiB |
sub4_08.txt |
AC |
114 ms |
28564 KiB |
sub4_09.txt |
AC |
109 ms |
28524 KiB |
sub4_10.txt |
AC |
147 ms |
27852 KiB |
sub4_11.txt |
AC |
131 ms |
27720 KiB |
sub4_12.txt |
AC |
130 ms |
27696 KiB |