Submission #2522702


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;

#define MAX_V 110000
#define MAX_LOG_V 20

vector<int> G[MAX_V];

int parent[MAX_LOG_V][MAX_V]; // 2^k th parent
int depth[MAX_V]; // distance from root
int root = 0;

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 k = 0; k < MAX_LOG_V - 1; 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]){
			u = parent[k][u];
			v = parent[k][v];
		}
	}
	return u;
}

int main(){
	
	int N;
	cin >> N;
	
	for(int i = 0; i < N - 1; i++){
		int x, y;
		cin >> x >> y;
		x--;
		y--;
		G[x].push_back(y);
		G[y].push_back(x);
	}
	
	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 1558 Byte
Status WA
Exec Time 379 ms
Memory 21760 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 0 / 30 0 / 70
Status
AC × 1
WA × 2
AC × 4
WA × 8
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 WA 4 ms 9856 KB
subtask0_sample02.txt AC 4 ms 9856 KB
subtask0_sample03.txt WA 4 ms 9856 KB
subtask1_01.txt AC 89 ms 21120 KB
subtask1_02.txt AC 89 ms 21120 KB
subtask1_03.txt AC 3 ms 9856 KB
subtask1_04.txt WA 3 ms 9856 KB
subtask1_05.txt WA 4 ms 9856 KB
subtask1_06.txt AC 4 ms 9856 KB
subtask1_07.txt WA 92 ms 14976 KB
subtask1_08.txt WA 98 ms 14848 KB
subtask1_09.txt WA 96 ms 14848 KB
subtask1_10.txt WA 95 ms 14848 KB
subtask1_11.txt WA 94 ms 14848 KB
subtask1_12.txt WA 95 ms 14848 KB
subtask2_01.txt AC 312 ms 21760 KB
subtask2_02.txt AC 311 ms 21632 KB
subtask2_03.txt WA 205 ms 9984 KB
subtask2_04.txt WA 217 ms 9984 KB
subtask2_05.txt WA 232 ms 10240 KB
subtask2_06.txt WA 234 ms 10240 KB
subtask2_07.txt WA 365 ms 15232 KB
subtask2_08.txt WA 367 ms 15232 KB
subtask2_09.txt WA 369 ms 15232 KB
subtask2_10.txt WA 373 ms 15232 KB
subtask2_11.txt WA 378 ms 15232 KB
subtask2_12.txt WA 379 ms 15232 KB