Pagini recente » Cod sursa (job #3340160) | Cod sursa (job #3220041) | Cod sursa (job #3325637) | Cod sursa (job #1103872) | Cod sursa (job #3351937)
#include <bits/stdc++.h>
using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
int n;
const int MAX = 100005;
vector<int> c[MAX];
int dist[MAX];
bool vis[MAX];
int maxglobal, nodcelmaideparte;
void bfs(int nodstart){
queue<int> q;
q.push(nodstart);
vis[nodstart] = true;
dist[nodstart] = 0;
while(!q.empty()){
int cur = q.front(); q.pop();
for(int visit : c[cur])
if(!vis[visit]){
dist[visit] = dist[cur] + 1;
if(dist[visit] > maxglobal){
maxglobal = dist[visit];
nodcelmaideparte = visit;
}
vis[visit] = true;
q.push(visit);
}
}
}
int main(){
f >> n;
for(int i = 0; i < n - 1; i++){
int u ,v;
f >> u >> v;
c[u].push_back(v);
c[v].push_back(u);
}
if(n == 1){
g << 0;
return 0;
}
bfs(1);
memset(vis,false,sizeof(vis));
memset(dist, 0, sizeof(dist));
maxglobal = 0;
bfs(nodcelmaideparte);
g << maxglobal;
}