Submission #4643628


Source Code Expand

#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
int root;
vector<int> g[100001];
int parent[17][20001];
int depth[100001];

void dfs(int v,int p,int d){
    parent[0][v]=p;
    depth[v]=d;
    for(int i=0;i<g[v].size();i++){
        if(g[v][i]!=p){
            dfs(g[v][i],v,d+1);
        }
    }
}

void init(int V){
    dfs(root,-1,0);
    for(int i=0;i+1<17;i++){
        for(int j=1;j<=V;j++){
            if(parent[i][j]<0){
                parent[i+1][j]=-1;
            }
            else{
                parent[i+1][j]=parent[i][parent[i][j]];
            }
        }
    }
}

int lca(int x,int y){
    if(depth[x]>depth[y]){
        swap(x,y);
    }
    for(int i=0;i<17;i++){
        if((depth[y]-depth[x]) >> i&1){
            y=parent[i][y];
        }
    }
    if(x==y){
        return x;
    }
    for(int i=16;i>=0;i--){
        if(parent[i][x]!=parent[i][y]){
            x=parent[i][x];
            y=parent[i][y];
        }
    }
    return parent[0][x];
}

int main(){
    int n,x,y,q,z;
    scanf("%d",&n);
    for(int i=0;i<n-1;i++){
        scanf("%d %d",&x,&y);
        g[x].push_back(y);
        g[y].push_back(x);
    }
    root=1;
    init(n);
    scanf("%d",&q);
    for(int i=0;i<q;i++){
        scanf("%d %d",&x,&y);
        z=lca(x,y);
        printf("%d\n",1+depth[x]+depth[y]-2*depth[z]);
    }
}

Submission Info

Submission Time
Task D - 閉路
User AC961009
Language C++14 (Clang 3.8.0)
Score 0
Code Size 1426 Byte
Status WA
Exec Time 107 ms
Memory 14336 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 0 / 30 0 / 70
Status
AC × 3
AC × 4
WA × 8
AC × 11
WA × 16
Set Name Test Cases
Sample subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt
Subtask1 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt
Subtask2 subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt
Case Name Status Exec Time Memory
subtask0_sample01.txt AC 22 ms 3576 KB
subtask0_sample02.txt AC 2 ms 2688 KB
subtask0_sample03.txt AC 2 ms 2688 KB
subtask1_01.txt WA 36 ms 13696 KB
subtask1_02.txt WA 36 ms 13696 KB
subtask1_03.txt AC 2 ms 2688 KB
subtask1_04.txt AC 2 ms 2688 KB
subtask1_05.txt AC 3 ms 2816 KB
subtask1_06.txt AC 3 ms 2816 KB
subtask1_07.txt WA 41 ms 7552 KB
subtask1_08.txt WA 42 ms 7552 KB
subtask1_09.txt WA 42 ms 7424 KB
subtask1_10.txt WA 42 ms 7552 KB
subtask1_11.txt WA 42 ms 7552 KB
subtask1_12.txt WA 42 ms 7552 KB
subtask2_01.txt WA 71 ms 14336 KB
subtask2_02.txt WA 71 ms 14336 KB
subtask2_03.txt AC 31 ms 2816 KB
subtask2_04.txt AC 35 ms 2944 KB
subtask2_05.txt AC 41 ms 3072 KB
subtask2_06.txt AC 42 ms 3200 KB
subtask2_07.txt WA 99 ms 8064 KB
subtask2_08.txt WA 107 ms 8064 KB
subtask2_09.txt WA 103 ms 7808 KB
subtask2_10.txt WA 106 ms 8064 KB
subtask2_11.txt WA 105 ms 7936 KB
subtask2_12.txt WA 99 ms 8064 KB