146022025-01-20 13:26:53Leventusz09Legtávolabbi leszármazottcpp17Elfogadva 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms3572 KiB
2Elfogadva0/081ms4916 KiB
3Elfogadva1/14ms3380 KiB
4Elfogadva3/34ms3384 KiB
5Elfogadva3/34ms3456 KiB
6Elfogadva1/14ms3316 KiB
7Elfogadva1/13ms3380 KiB
8Elfogadva1/14ms3484 KiB
9Elfogadva2/283ms4916 KiB
10Elfogadva3/386ms5084 KiB
11Elfogadva3/33ms3380 KiB
12Elfogadva4/497ms7668 KiB
13Elfogadva4/493ms7732 KiB
14Elfogadva3/310ms3648 KiB
15Elfogadva3/393ms7732 KiB
16Elfogadva3/382ms8188 KiB
17Elfogadva3/3100ms7732 KiB
18Elfogadva4/470ms6196 KiB
19Elfogadva4/483ms7488 KiB
20Elfogadva4/494ms10548 KiB