Cod sursa(job #2639634)

Utilizator KlinashkaDiacicov Calin Marian Klinashka Data 3 august 2020 12:08:52
Problema Diametrul unui arbore Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include <bits/stdc++.h>
using namespace std;

const int NMAX=(int)1e5;
int N, M, dep[NMAX+1], sol;
vector<int> adj[NMAX+1];
bool vis[NMAX+1];

void dfs(int a) {
	dep[a]=1;
	vis[a]=1;
	for(auto &b:adj[a]) {
		if(vis[b]==0) {
			dfs(b);
			dep[a]=max(dep[a], dep[b]+1);
		}
	}
	int cur=0;
	for(auto &b:adj[a]) {
		sol=max(sol, 1+dep[b]+cur);
		cur=max(cur, dep[b]);
	}
}

int main() {
	freopen("darb.in", "r", stdin);
	freopen("darb.out", "w", stdout);
	cin>>N;
	for(int i=1;i<N;++i) {
		int a, b;
		cin>>a>>b;
		adj[a].push_back(b);
		adj[b].push_back(a);
	}
	dfs(1);
	cout<<sol<<'\n';
	return 0;
}