Submission #3629067


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, n) for(int i = 0; i < (n); i++)
#define rep1(i, n) for(int i = 1; i <= (n); i++)
#define co(x) cout << (x) << "\n"
#define cosp(x) cout << (x) << " "
#define ce(x) cerr << (x) << "\n"
#define cesp(x) cerr << (x) << " "
#define pb push_back
#define mp make_pair
#define Would
#define you
#define please

vector<int> E[100001];
int P[20][100001];
int D[100001];

int oya(int A, int B) {
	if (B == 0) return A;
	int kazu = 0;
	int kari = B;
	while (kari > 1) {
		kazu++;
		kari /= 2;
	}
	return oya(P[kazu][A], B - (1 << kazu));
}

void dfs(int A, int B, int C) {
	if (D[A] == 0) {
		D[A] = B;
		P[0][A] = C;
		int mae = C;
		rep(i, 19) {
			P[i + 1][A] = oya(mae, 1 << i);
			mae = P[i + 1][A];
		}
		for (int i : E[A]) dfs(i, B + 1, A);
	}
}

int main() {
	cin.tie(0);
	ios::sync_with_stdio(false);


	int N;
	cin >> N;
	rep(i, N - 1) {
		int x, y;
		cin >> x >> y;
		E[x].pb(y);
		E[y].pb(x);
	}

	dfs(1, 1, 0);

	int Q;
	cin >> Q;
	rep(i, Q) {
		int a, b;
		cin >> a >> b;

		if (D[a] > D[b]) swap(a, b);
		int sa = D[b] - D[a];
		b = oya(b, sa);

		int L = 0;
		int R = D[a];
		while (L < R) {
			int half = (L + R) / 2;
			if (oya(a, half) == oya(b, half)) R = half;
			else L = half + 1;
		}
		co(L * 2 + sa + 1);
	}

	Would you please return 0;
}

Submission Info

Submission Time
Task D - 閉路
User uzzy
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1413 Byte
Status AC
Exec Time 172 ms
Memory 19328 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 3 ms 8832 KB
subtask0_sample02.txt AC 3 ms 8832 KB
subtask0_sample03.txt AC 3 ms 8832 KB
subtask1_01.txt AC 48 ms 18560 KB
subtask1_02.txt AC 49 ms 18560 KB
subtask1_03.txt AC 3 ms 8832 KB
subtask1_04.txt AC 3 ms 8832 KB
subtask1_05.txt AC 4 ms 8832 KB
subtask1_06.txt AC 4 ms 8832 KB
subtask1_07.txt AC 75 ms 14080 KB
subtask1_08.txt AC 76 ms 13952 KB
subtask1_09.txt AC 83 ms 13952 KB
subtask1_10.txt AC 72 ms 13952 KB
subtask1_11.txt AC 76 ms 13952 KB
subtask1_12.txt AC 77 ms 13952 KB
subtask2_01.txt AC 75 ms 19328 KB
subtask2_02.txt AC 87 ms 19200 KB
subtask2_03.txt AC 24 ms 8960 KB
subtask2_04.txt AC 27 ms 9088 KB
subtask2_05.txt AC 40 ms 9216 KB
subtask2_06.txt AC 42 ms 9216 KB
subtask2_07.txt AC 104 ms 14336 KB
subtask2_08.txt AC 119 ms 14336 KB
subtask2_09.txt AC 140 ms 14336 KB
subtask2_10.txt AC 155 ms 14336 KB
subtask2_11.txt AC 172 ms 14336 KB
subtask2_12.txt AC 155 ms 14336 KB