Submission #1869341


Source Code Expand

#include <iostream>
#include <set>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int N, Q;
int deg[100000];
int par[100000];
vector<vector<int>> child;
int lca(int a, int b) {
	if (deg[b] < deg[a]) swap(a, b);
	while (deg[b] - deg[a] > 0) b = par[b];
	if (a == b) return a;
	while (a != b) {
		a = par[a];
		b = par[b];
	}
	return a;
}
int main(void) {
	cin >> N;
	child.resize(N);
	for (int n = 0; n < (N - 1); ++n) {
		int a, b; cin >> a >> b;
		--a; --b;
		child[a].push_back(b);
		child[b].push_back(a);
	}
	int root = 0;
	par[root] = -1;
	queue<pair<int, int>> q; q.emplace(root, 0);
	while (!q.empty()) {
		pair<int, int> p = q.front(); q.pop();
		int id = p.first;
		int d = p.second;
		for (int s = 0; s < child[id].size(); ++s) {
			int c = child[id][s];
			if (c == par[id]) continue;
			deg[c] = d + 1;
			par[c] = id;
			q.emplace(c, deg[c]);
		}
	}
#ifdef LOCAL
	cin >> Q;
	vector<pair<int, int>> v;
	for (int i = 0; i < Q; ++i) {
		int a, b; cin >> a >> b;
		--a; --b;
		v.emplace_back(a, b);
	}
	for (int s = 0; s < v.size(); ++s) {
		pair<int, int> p = v[s];
		int a = p.first;
		int b = p.second;
		int l = lca(a, b);
		cout << deg[a] + deg[b] - (deg[l] * 2) + 1 << endl;
	}
#else
	cin >> Q;
	for (int i = 0; i < Q; ++i) {
		int a, b; cin >> a >> b;
		--a; --b;
		int l = lca(a, b);
		cout << deg[a] + deg[b] - (deg[l] * 2) + 1 << endl;
	}
#endif
	return 0;
}

Submission Info

Submission Time
Task D - 閉路
User k0101
Language C++14 (GCC 5.4.1)
Score 30
Code Size 1476 Byte
Status TLE
Exec Time 2104 ms
Memory 7040 KB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 30 / 30 0 / 70
Status
AC × 3
AC × 12
AC × 25
TLE × 2
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 1 ms 256 KB
subtask0_sample02.txt AC 1 ms 256 KB
subtask0_sample03.txt AC 1 ms 256 KB
subtask1_01.txt AC 70 ms 6528 KB
subtask1_02.txt AC 70 ms 6528 KB
subtask1_03.txt AC 1 ms 256 KB
subtask1_04.txt AC 1 ms 256 KB
subtask1_05.txt AC 2 ms 256 KB
subtask1_06.txt AC 2 ms 256 KB
subtask1_07.txt AC 81 ms 6656 KB
subtask1_08.txt AC 83 ms 6656 KB
subtask1_09.txt AC 82 ms 6528 KB
subtask1_10.txt AC 77 ms 6528 KB
subtask1_11.txt AC 85 ms 6528 KB
subtask1_12.txt AC 82 ms 6528 KB
subtask2_01.txt TLE 2104 ms 6528 KB
subtask2_02.txt TLE 2104 ms 6528 KB
subtask2_03.txt AC 212 ms 384 KB
subtask2_04.txt AC 205 ms 512 KB
subtask2_05.txt AC 224 ms 640 KB
subtask2_06.txt AC 251 ms 640 KB
subtask2_07.txt AC 316 ms 7040 KB
subtask2_08.txt AC 322 ms 6912 KB
subtask2_09.txt AC 372 ms 6912 KB
subtask2_10.txt AC 454 ms 6912 KB
subtask2_11.txt AC 565 ms 6912 KB
subtask2_12.txt AC 514 ms 6912 KB