Pagini recente » Cod sursa (job #2913496) | Cod sursa (job #2706124) | Cod sursa (job #2919991) | Cod sursa (job #3177315) | Cod sursa (job #1228358)
#include <fstream>
#include <iostream>
#include <vector>
#include <iterator>
#define MAXN 100002
using namespace std;
typedef vector<vector<int>> Graph;
Graph graph;
bool visited[MAXN];
int dfs(int node)
{
int dist = 0;
visited[node] = true;
for (int neighbor : graph[node])
{
if (visited[neighbor] == false)
{
dist = max(dist, dfs(neighbor));
}
}
return dist + 1;
}
int main()
{
int n;
fstream fin("darb.in", fstream::in);
fstream fout("darb.out", fstream::out);
fin >> n;
//cout << n << endl;
graph.resize(MAXN);
for (int i=0; i<n-1; ++i)
{
int x, y;
fin >> x >> y;
//cout << x << " " << y << endl;
graph[x-1].push_back(y-1);
graph[y-1].push_back(x-1);
}
/*for (int i=0; i<n; ++i)
{
cout << i+1 << " ---> ";
for (int node : graph[i])
{
cout << node+1 << " ";
}
cout << endl;
}*/
int maxs[2] = {};
visited[0] = true;
for (int node : graph[0])
{
int dist = dfs(node);
if (dist >= maxs[0])
{
maxs[1] = maxs[0];
maxs[0] = dist;
}
else if (dist > maxs[1])
{
maxs[1] = dist;
}
}
fout << maxs[0] + maxs[1] + 1 << "\n";
return 0;
}