Submission #1869447


Source Code Expand

#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
int N, Q;
vector<vector<int>> G;
int par[18][100000];
int deg[100000];
int maxDeg;
void dfs(int n, int p, int d) {
	maxDeg = max(maxDeg, d);
	par[0][n] = p;
	for (int s = 0; s < G[n].size(); ++s) {
		int child = G[n][s];
		if (child == n) continue;
		dfs(child, n, d + 1);
	}
}
void doubling(){
	for (int k = 1; k <= ceil(log2(maxDeg)); ++k) {
		for (int n = 0; n < N; ++n) {
			if (par[k - 1][n] == -1) par[k][n] = -1;
			else par[k][n] = par[k - 1][par[k - 1][n]];
		}
	}
}
int lca(int a, int b) {
	if (deg[b] < deg[a]) swap(a, b);
	int m = deg[b] - deg[a];
	for (int i = 0; i < floor(log2(m)) + 1; ++i) {
		if (m & (1U << i)) {
			b = par[i][b];
		}
	}
	if (a == b) return a;
	for (int k = ceil(log2(maxDeg)); k >= 0; --k) {
		if (par[k][a] >= 0 && par[k][a] == par[k][b]) break;
		a = par[k][a];
		b = par[k][b];
	}
	return par[0][a];
}
int main(void) {
	cin >> N >> Q;
	G.resize(N);
	for (int n = 0; n < N; ++n) {
		int a, b; cin >> a >> b;
		--a; --b;
		G[a].push_back(b);
		G[b].push_back(a);
	}
	int root = 0;
	dfs(root, -1, 0);
	doubling();
	cin >> Q;
	for (int q = 0; q < Q; ++q) {
		int a, b; cin >> a >> b;
		--a; --b;
		int l = lca(a, b);
		cout << deg[a] + deg[b] - deg[l] - deg[l] + 1 << endl;
	}
	return 0;
}











Submission Info

Submission Time
Task D - 閉路
User k0101
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1408 Byte
Status RE
Exec Time 303 ms
Memory 267904 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 0 / 30 0 / 70
Status
RE × 3
RE × 12
RE × 27
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 RE 228 ms 262400 KB
subtask0_sample02.txt RE 233 ms 262400 KB
subtask0_sample03.txt RE 231 ms 262400 KB
subtask1_01.txt RE 294 ms 267904 KB
subtask1_02.txt RE 294 ms 267904 KB
subtask1_03.txt RE 230 ms 262400 KB
subtask1_04.txt RE 229 ms 262400 KB
subtask1_05.txt RE 230 ms 262400 KB
subtask1_06.txt RE 230 ms 262400 KB
subtask1_07.txt RE 299 ms 267904 KB
subtask1_08.txt RE 300 ms 267904 KB
subtask1_09.txt RE 298 ms 267904 KB
subtask1_10.txt RE 300 ms 267904 KB
subtask1_11.txt RE 303 ms 267904 KB
subtask1_12.txt RE 303 ms 267904 KB
subtask2_01.txt RE 297 ms 267904 KB
subtask2_02.txt RE 299 ms 267904 KB
subtask2_03.txt RE 96 ms 256 KB
subtask2_04.txt RE 97 ms 256 KB
subtask2_05.txt RE 97 ms 256 KB
subtask2_06.txt RE 96 ms 256 KB
subtask2_07.txt RE 301 ms 267904 KB
subtask2_08.txt RE 299 ms 267904 KB
subtask2_09.txt RE 299 ms 267904 KB
subtask2_10.txt RE 302 ms 267904 KB
subtask2_11.txt RE 300 ms 267904 KB
subtask2_12.txt RE 300 ms 267904 KB