Pagini recente » Cod sursa (job #1715946) | Istoria paginii runda/ant5/clasament | Rating chirita denis (denis1) | Cod sursa (job #226589) | Cod sursa (job #1722397)
#include <bits/stdc++.h>
using namespace std;
int bfs(int s, int dist[], std::vector<int> g[], int n) {
int node; // ultimul nod descoperit
std::queue<int> q;
bool visited[n + 1];
memset(visited, false, sizeof(bool) * (n + 1));
q.push(s);
visited[s] = true;
while (!q.empty()) {
node = q.front();
q.pop();
for (unsigned int i = 0; i < g[node].size(); i++) {
if (!visited[g[node][i]]) {
visited[g[node][i]] = true;
q.push(g[node][i]);
dist[g[node][i]] = dist[node] + 1;
}
}
}
return node;
}
int main() {
ifstream fin("darb.in");
ofstream fout("darb.out");
int N, u, v;
fin >> N;
vector<int> graph[N + 1];
int dist[N + 1];
memset(dist, 0, sizeof(int) * (N + 1));
for (int i = 1; i < N; i++) {
fin >> u >> v;
graph[u].push_back(v);
graph[v].push_back(u);
}
int last = bfs(1, dist, graph, N);
memset(dist, 0, sizeof(int) * (N + 1));
fout << (dist[bfs(last, dist, graph, N)] + 1);
fin.close();
fout.close();
return 0;
}