Pagini recente » Cod sursa (job #1066097) | Cod sursa (job #451098) | Cod sursa (job #1663916) | Cod sursa (job #1538680) | Cod sursa (job #1637819)
#include <fstream>
#include <vector>
constexpr int kMaxN = 100000;
constexpr int kNotVisited = -1;
int n, m;
std::vector<int> edges[kMaxN+1];
int depth[kMaxN+1], deepest_node = 1;
void dfs(int x) {
if(depth[x] > depth[deepest_node]) deepest_node = x;
for(int y : edges[x]) {
if(depth[y] == kNotVisited) {
depth[y] = depth[x]+1;
dfs(y);
}
}
}
int main()
{
std::ifstream in("darb.in");
std::ofstream out("darb.out");
in>>n;
m = n-1;
for(int i = 1; i <= n; ++i) depth[i] = kNotVisited;
for(int x, y, i = 1; i <= m; ++i) {
in>>x>>y;
edges[x].push_back(y);
edges[y].push_back(x);
}
deepest_node = 1;
depth[1] = 1;
dfs(1);
for(int i = 1; i <= n; ++i) depth[i] = kNotVisited;
depth[deepest_node] = 1;
dfs(deepest_node);
out<<depth[deepest_node]<<'\n';
return 0;
}