Pagini recente » Cod sursa (job #59477) | Cod sursa (job #1829400) | Cod sursa (job #2691652) | Cod sursa (job #1024239) | Cod sursa (job #2695030)
#include <bits/stdc++.h>
using namespace std;
int parcurge(int i, vector <vector <int>> &edges, vector <bool> &vazut) {
int maxim = 0;
vazut[i] = 0;
for (int j = 0; j < edges[i].size(); j++)
if (vazut[edges[i][j]])
maxim = max(maxim, parcurge(edges[i][j], edges, vazut));
return maxim + 1;
}
int main() {
freopen("darb.in", "r", stdin);
freopen("darb.out", "w", stdout);
int n, i, x, y;
cin >> n;
vector <vector <int>> edges(n + 1);
vector <bool> vazut(n + 1);
for (i = 1; i < n; i++) {
cin >> x >> y;
edges[x].push_back(y);
edges[y].push_back(x);
}
queue <int> parcurse;
parcurse.push(1);
int ultim = 1, act;
while (!parcurse.empty()) {
act = parcurse.front();
for (i = 0; i < edges[act].size(); i++) {
if (!vazut[edges[act][i]])
parcurse.push(edges[act][i]);
vazut[edges[act][i]] = 1;
}
ultim = act;
parcurse.pop();
}
cout << parcurge(ultim, edges, vazut);
return 0;
}