Submission #2522692


Source Code Expand

#define _USE_MATH_DEFINES

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>

using namespace std;
const int MAX_LOG_V = 20;
const int MAX = 1e5+1;
 
int depth[MAX];
int dist[MAX];
int parent[MAX_LOG_V][MAX];
int root;
vector<int> G[MAX];
 
void dfs(int v, int p, int d){
    depth[v] = d;
    parent[0][v] = p;
    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 k=0;k+1<MAX_LOG_V;k++){
        for(int v=0;v<V;v++){
            if(parent[k][v] < 0) parent[k+1][v] = -1;
            else                 parent[k+1][v] = parent[k][parent[k][v]];
        }
    }
}
 
int lca(int u, int v){
    if(depth[u] > depth[v]) swap(u,v);
    for(int k=0;k<MAX_LOG_V;k++){
        if(((depth[v] - depth[u])>>k)&1){
            v = parent[k][v];
        }
    }
    if(u == v) return u;
    for(int k=MAX_LOG_V-1;k>=0;k--){
        if(parent[k][u] != parent[k][v]){
            v = parent[k][v];
            u = parent[k][u];
        }
    }
    return parent[0][u];
}
 
int main(){
	
	int N;
	cin >> N;
	
	for(int i = 0; i < N - 1; i++){
		int x, y;
		cin >> x >> y;
		x--;
		y--;
		if(x > y){
			swap(x, y);
		}
		G[x].push_back(y);
	}
	
	init(N);
	
	int Q;
	cin >> Q;
	
	for(int i = 0; i < Q; i++){
		int x, y;
		cin >> x >> y;
		x--;
		y--;
		int p = lca(x, y);
		cout << depth[y] - depth[p] - depth[p] + depth[x] + 1 << endl;
	}
	
	return 0;
}

Submission Info

Submission Time
Task D - 閉路
User monolith
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1612 Byte
Status WA
Exec Time 334 ms
Memory 20864 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 0 / 30 0 / 70
Status
AC × 3
AC × 2
WA × 10
AC × 7
WA × 20
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 4 ms 10496 KB
subtask0_sample02.txt AC 4 ms 10496 KB
subtask0_sample03.txt AC 4 ms 10496 KB
subtask1_01.txt AC 83 ms 20224 KB
subtask1_02.txt AC 84 ms 20224 KB
subtask1_03.txt WA 4 ms 10496 KB
subtask1_04.txt WA 4 ms 10496 KB
subtask1_05.txt WA 4 ms 10496 KB
subtask1_06.txt WA 4 ms 10496 KB
subtask1_07.txt WA 82 ms 12416 KB
subtask1_08.txt WA 84 ms 12416 KB
subtask1_09.txt WA 82 ms 12544 KB
subtask1_10.txt WA 82 ms 12544 KB
subtask1_11.txt WA 81 ms 12416 KB
subtask1_12.txt WA 86 ms 12416 KB
subtask2_01.txt AC 311 ms 20864 KB
subtask2_02.txt AC 303 ms 20864 KB
subtask2_03.txt WA 209 ms 10624 KB
subtask2_04.txt WA 211 ms 10624 KB
subtask2_05.txt WA 235 ms 10752 KB
subtask2_06.txt WA 230 ms 10752 KB
subtask2_07.txt WA 320 ms 12672 KB
subtask2_08.txt WA 325 ms 12672 KB
subtask2_09.txt WA 324 ms 12672 KB
subtask2_10.txt WA 324 ms 12672 KB
subtask2_11.txt WA 330 ms 12672 KB
subtask2_12.txt WA 334 ms 12672 KB