Submission #4047623


Source Code Expand

#include <bits/stdc++.h>
typedef long long ll;

using namespace std;

vector<vector<int>> G;
int root;

int parent[18][100010];
int depth[100010];

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 + 1 < 18; ++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 < 18; ++k) {
		if ((depth[v] - depth[u])>>k & 1) {
			v = parent[k][v];
		}
	}
	if (u == v) { return u; }
	
	for (int k = 17; k >= 0; --k) {
		if (parent[k][u] != parent[k][v]) {
			u = parent[k][u];
			v = parent[k][v];
		}
	}
	return parent[0][u];
}

int main() {
	int N;
	cin >> N;
	G.resize(N + 1);
	for (int i = 0; i < N - 1; ++i) {
		int x, y;
		cin >> x >> y;
		G[x].push_back(y);
		G[y].push_back(x);
	}
	int Q;
	cin >> Q;
	vector<int> a(Q);
	vector<int> b(Q);
	for (int i = 0; i < Q; ++i) {
		cin >> a[i] >> b[i];
	}

	root = 1;
	init(N);
	for (int i = 0; i < Q; ++i) {
		int p = lca(a[i], b[i]);
		int res = (depth[a[i]] - depth[p]) + (depth[b[i]] - depth[p]) + 1;
		cout << res << endl;
	}

	return 0;
}

Submission Info

Submission Time
Task D - 閉路
User woodline23xx
Language C++14 (GCC 5.4.1)
Score 30
Code Size 1408 Byte
Status WA
Exec Time 336 ms
Memory 19328 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 30 / 30 0 / 70
Status
AC × 3
AC × 12
AC × 18
WA × 9
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 2 ms 4352 KB
subtask0_sample02.txt AC 2 ms 4352 KB
subtask0_sample03.txt AC 2 ms 4352 KB
subtask1_01.txt AC 75 ms 17792 KB
subtask1_02.txt AC 75 ms 17792 KB
subtask1_03.txt AC 2 ms 4352 KB
subtask1_04.txt AC 2 ms 4352 KB
subtask1_05.txt AC 3 ms 4480 KB
subtask1_06.txt AC 3 ms 4480 KB
subtask1_07.txt AC 82 ms 13184 KB
subtask1_08.txt AC 83 ms 13184 KB
subtask1_09.txt AC 81 ms 13184 KB
subtask1_10.txt AC 84 ms 13184 KB
subtask1_11.txt AC 84 ms 13184 KB
subtask1_12.txt AC 84 ms 13184 KB
subtask2_01.txt AC 283 ms 19328 KB
subtask2_02.txt AC 282 ms 19200 KB
subtask2_03.txt AC 192 ms 5376 KB
subtask2_04.txt WA 202 ms 5376 KB
subtask2_05.txt WA 216 ms 5504 KB
subtask2_06.txt WA 211 ms 5632 KB
subtask2_07.txt WA 322 ms 14336 KB
subtask2_08.txt WA 323 ms 14208 KB
subtask2_09.txt WA 336 ms 14336 KB
subtask2_10.txt WA 336 ms 14336 KB
subtask2_11.txt WA 335 ms 14336 KB
subtask2_12.txt WA 336 ms 14336 KB