Pagini recente » Cod sursa (job #2096752) | Cod sursa (job #299720) | Cod sursa (job #155229) | Cod sursa (job #2833355) | Cod sursa (job #1098288)
#include <cstdio>
#include <vector>
#include <queue>
#include <cstring>
#define SIZE 100002
using namespace std;
vector <int> adj[SIZE];
queue <int> q;
int n, MAX, MAX_node, dist_min[SIZE];
inline void read();
inline void solve();
inline void write();
int main()
{
read();
solve();
write();
return 0;
}
inline void read()
{
freopen("darb.in", "r", stdin);
scanf("%d", &n);
for(int i = 1; i <= n - 1; ++i)
{
int x, y;
scanf("%d%d", &x, &y);
adj[x].push_back(y);
adj[y].push_back(x);
}
}
inline void BFS(int source)
{
memset(dist_min, 0x3f3f3f3f, sizeof(dist_min));
q.push(source);
dist_min[source] = 0;
while( !q.empty() )
{
int node = q.front();
q.pop();
for( vector <int> :: iterator it = adj[node].begin(); it != adj[node].end(); ++it)
if( dist_min[*it] > dist_min[node] + 1)
{
dist_min[*it] = dist_min[node] + 1;
q.push(*it);
if( dist_min[*it] > MAX)
{
MAX = dist_min[*it];
MAX_node = *it;
}
}
}
}
inline void solve()
{
BFS(1);
BFS(MAX_node);
}
inline void write()
{
freopen("darb.out", "w", stdout);
printf("%d\n", MAX + 1);
}