146012025-01-20 13:20:36Leventusz09Legtávolabbi leszármazottcpp17Hibás válasz 1/5097ms10428 KiB
#include <iostream>
#include <vector>

using namespace std;

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

int P;
Vertex vertices[100000];

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) {
		int fchild = f(child).first;
		if (fchild > mx) {
			mx = fchild;
			mxi = child;
		}
	}

	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 = 0; i < N; i++) {
		if (vertices[i].parent == -1) {
			P = i;
			break;
		}
	}

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

	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base1/50
1Elfogadva0/03ms3380 KiB
2Hibás válasz0/087ms4916 KiB
3Elfogadva1/14ms3380 KiB
4Hibás válasz0/33ms3384 KiB
5Hibás válasz0/33ms3380 KiB
6Hibás válasz0/13ms3584 KiB
7Hibás válasz0/14ms3380 KiB
8Hibás válasz0/14ms3380 KiB
9Hibás válasz0/283ms4956 KiB
10Hibás válasz0/392ms5132 KiB
11Hibás válasz0/33ms3380 KiB
12Hibás válasz0/493ms7732 KiB
13Hibás válasz0/496ms7728 KiB
14Hibás válasz0/310ms3636 KiB
15Hibás válasz0/396ms7732 KiB
16Hibás válasz0/390ms8244 KiB
17Hibás válasz0/394ms7732 KiB
18Hibás válasz0/472ms6196 KiB
19Hibás válasz0/478ms7476 KiB
20Hibás válasz0/497ms10428 KiB