Pagini recente » Cod sursa (job #1180635) | Cod sursa (job #186369) | Cod sursa (job #1752039) | tema | Cod sursa (job #2695365)
#include <bits/stdc++.h>
using namespace std;
vector<vector<int>> edges;
vector<bool> used;
vector<int> d;
int lastNode;
void dfs(int u) {
d[u] = 0;
used[u] = true;
queue<int> q;
q.push(u);
while(!q.empty()) {
u = q.front();
q.pop();
for(int v: edges[u])
if(!used[v]) {
used[v] = true;
d[v] = d[u] + 1;
lastNode = v;
q.push(v);
}
}
}
int main() {
freopen("darb.in", "r", stdin);
freopen("darb.out", "w", stdout);
int n;
cin >> n;
edges.resize(n);
used.resize(n);
d.resize(n);
for(int i=0; i<n-1; i++) {
int u, v;
cin >> u >> v;
edges[u - 1].push_back(v - 1);
edges[v - 1].push_back(u - 1);
}
int random = 0;
dfs(random);
int node1 = lastNode;
used.assign(n, 0);
d.assign(n, 0);
int d1 = d[node1];
dfs(node1);
int node2 = lastNode;
cout << d[lastNode] + d1 + 1;
return 0;
}