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
AC × 3
AC × 14
AC × 10
AC × 9
AC × 42
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