146022025-01-20 13:26:53Leventusz09Legtávolabbi leszármazottcpp17Accepted 50/50100ms10548 KiB
#include <iostream>
#include <vector>

using namespace std;

struct Vertex {
	int parent = -1;
	vector<int> children;
};

int P;
Vertex vertices[100001];

// w - i
pair<int, int> f(int i) {
	if (vertices[i].children.empty()) return { 0, i };
	
	int mx = -1;
	int mxi = -1;
	for (int child : vertices[i].children) {
		auto fchild = f(child);
		if (fchild.first > mx) {
			mx  = fchild.first;
			mxi = fchild.second;
		}
	}

	return { mx + 1, mxi };
}

int main() {
	int N;
	cin >> N;

	for (int i = 1, p, c; i < N; i++) {
		cin >> p >> c;
		//p--; c--;
		vertices[p].children.push_back(c);
		vertices[c].parent = p;
	}

	for (int i = 1; i < N; i++) {
		if (vertices[i].parent == -1) {
			P = i;
			break;
		}
	}

	cout << f(P).second << "\n";

	return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/03ms3572 KiB
2Accepted0/081ms4916 KiB
3Accepted1/14ms3380 KiB
4Accepted3/34ms3384 KiB
5Accepted3/34ms3456 KiB
6Accepted1/14ms3316 KiB
7Accepted1/13ms3380 KiB
8Accepted1/14ms3484 KiB
9Accepted2/283ms4916 KiB
10Accepted3/386ms5084 KiB
11Accepted3/33ms3380 KiB
12Accepted4/497ms7668 KiB
13Accepted4/493ms7732 KiB
14Accepted3/310ms3648 KiB
15Accepted3/393ms7732 KiB
16Accepted3/382ms8188 KiB
17Accepted3/3100ms7732 KiB
18Accepted4/470ms6196 KiB
19Accepted4/483ms7488 KiB
20Accepted4/494ms10548 KiB