Pagini recente » Cod sursa (job #2618739) | Cod sursa (job #505110) | Cod sursa (job #2983339) | Cod sursa (job #2878762) | Cod sursa (job #1551126)
#include<cstdio>
#include<deque>
#include<vector>
#include<cstring>
using namespace std;
vector<int> a[100001];
vector<int>::iterator it;
deque<int> cd;
int i, d, n, x, y, last;
inline void dfs(int poz){
int lg[100001];
bool sel[100001];
memset(lg, 0, 100001);
memset(sel, 0, 100001);
cd.push_back(poz); sel[poz]=true; lg[poz]=1;
while (!cd.empty()) {
x=cd.front(); cd.pop_front();
for (it=a[x].begin();it!=a[x].end();it++) if (!sel[*it]) {
sel[*it]=true; lg[*it]=lg[x]+1; if (lg[*it]>d) d=lg[*it];
cd.push_back(*it);
}
}
last=x;
}
int main(){
freopen("darb.in","r",stdin);
freopen("darb.out","w",stdout);
scanf("%d", &n);
for (i=1;i<=n;i++) {scanf("%d%d", &x, &y); a[x].push_back(y); a[y].push_back(x);}
dfs(1);
dfs(last); printf("%d\n", d);
return 0;
}