Pagini recente » Cod sursa (job #2025005) | Cod sursa (job #43437) | Cod sursa (job #2476147) | Cod sursa (job #553530) | Cod sursa (job #3211864)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
int bfs(vector<vector<int>>& graph, int start, vector<int>& distances) {
int n = graph.size();
vector<bool> visited(n + 1, false);
queue<int> q;
q.push(start);
visited[start] = true;
int lastVisited = start;
while (!q.empty()) {
int node = q.front();
q.pop();
for (int neighbor : graph[node]) {
if (!visited[neighbor]) {
visited[neighbor] = true;
distances[neighbor] = distances[node] + 1;
q.push(neighbor);
lastVisited = neighbor;
}
}
}
return lastVisited;
}
int main() {
int n;
fin >> n;
vector<vector<int>> graph(n + 1);
for (int i = 0; i < n - 1; ++i) {
int x, y;
fin >> x >> y;
graph[x].push_back(y);
graph[y].push_back(x);
}
vector<int> distances(n + 1, 1);
int firstEnd = bfs(graph, 1, distances);
fill(distances.begin(), distances.end(), 1);
int secondEnd = bfs(graph, firstEnd, distances);
fout << distances[secondEnd];
return 0;
}