Submission #1575202


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
#define FOR(i, n) for(int i = 0; i < (n); i++)
#define MEM(a, x) memset(a, x, sizeof(a))
#define ALL(a) a.begin(), a.end()
#define UNIQUE(a) a.erase(unique(ALL(a)), a.end())
typedef long long ll;

int n, q;
int par[20][100005], dep[100005];
vector<int> g[100005];

void dfs(int v, int p, int d) {
	par[0][v] = p;
	dep[v] = d;
	FOR(i, g[v].size()) {
		if (g[v][i] != p) dfs(g[v][i], v, d+1);
	}
}

void init() {
	dfs(0, -1, 0);
	FOR(k, 20-1) {
		FOR(v, n) {
			if (par[k][v] < 0) par[k+1][v] = -1;
			else par[k+1][v] = par[k][par[k][v]];
		}
	}
}

int lca(int u, int v) {
	if (dep[u] > dep[v]) swap(u, v);
	FOR(k, 20) {
		if ((dep[v]-dep[u]) >> k & 1) {
			v = par[k][v];
		}
	}
	if (u == v) return u;
	for (int k = 20-1; k >= 0; k--) {
		if (par[k][u] != par[k][v]) {
			u = par[k][u];
			v = par[k][v];
		}
	}
	return par[0][u];
}

int main(int argc, char const *argv[]) {
	ios_base::sync_with_stdio(false);
	cin >> n;
	FOR(i, n-1) {
		int a, b;
		cin >> a >> b;
		g[a-1].push_back(b-1);
		g[b-1].push_back(a-1);
	}
	init();
	cin >> q;
	vector<int> ans(q);
	FOR(i, q) {
		int a, b;
		cin >> a >> b;
		a--;
		b--;
		ans[i] = dep[a] + dep[b] - 2 * dep[lca(a, b)] + 1;
	}
	FOR(i, q) cout << ans[i] << endl;
	return 0;
}

Submission Info

Submission Time
Task D - 閉路
User moguta
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1332 Byte
Status AC
Exec Time 237 ms
Memory 21248 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 30 / 30 70 / 70
Status
AC × 3
AC × 12
AC × 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 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 34 ms 20224 KB
subtask1_02.txt AC 34 ms 20224 KB
subtask1_03.txt AC 4 ms 10496 KB
subtask1_04.txt AC 4 ms 10496 KB
subtask1_05.txt AC 4 ms 10496 KB
subtask1_06.txt AC 4 ms 10496 KB
subtask1_07.txt AC 40 ms 14080 KB
subtask1_08.txt AC 41 ms 13952 KB
subtask1_09.txt AC 42 ms 13952 KB
subtask1_10.txt AC 43 ms 13952 KB
subtask1_11.txt AC 42 ms 13952 KB
subtask1_12.txt AC 42 ms 13952 KB
subtask2_01.txt AC 201 ms 21248 KB
subtask2_02.txt AC 199 ms 21120 KB
subtask2_03.txt AC 167 ms 11136 KB
subtask2_04.txt AC 176 ms 11136 KB
subtask2_05.txt AC 176 ms 11264 KB
subtask2_06.txt AC 183 ms 11264 KB
subtask2_07.txt AC 223 ms 14720 KB
subtask2_08.txt AC 225 ms 14720 KB
subtask2_09.txt AC 230 ms 14720 KB
subtask2_10.txt AC 234 ms 14720 KB
subtask2_11.txt AC 237 ms 14720 KB
subtask2_12.txt AC 236 ms 14720 KB