Cod sursa(job #1947601)

Utilizator virtualityBbbbbbbbbbbbbbbbbb virtuality Data 31 martie 2017 08:25:24
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<bits/stdc++.h>
#define f first
#define s second
using namespace std;
const int N=100020;
int u, v[N], maxl, dr=1;
vector <int> lda[N];
pair <int, int> l[N];
void bfs(int st){
	if(st>dr)return;
	int nod=l[st].f;
	int x=lda[nod].size();
	for(int i=0;i<x;i++)if(!v[lda[nod][i]]){
		v[lda[nod][i]]=1;
		l[++dr].f=lda[nod][i];
		l[dr].s=l[st].s+1;
	}
	bfs(st+1);
}
int main(){
	int t, x, y;
	int n;
	freopen("darb.in", "r", stdin);
	freopen("darb.out", "w", stdout);
	scanf("%d", &n);
	int m=n-1;
	while(m--){
		scanf("%d%d", &x, &y);
		lda[x].push_back(y);
		lda[y].push_back(x);
	}
	l[1].f=1;
	l[1].s=1;
	v[1]=1;
	bfs(1);
	for(int i=1;i<=n;i++){
		v[i]=0;
	}
	l[1].f=l[dr].f;
	l[1].s=1;
	v[l[dr].f]=1;
	dr=1;
	bfs(1);
	printf("%d", l[dr].s);
	return 0;
}