Cod sursa(job #3155745)

Utilizator BadHero112Ursu Vasile BadHero112 Data 9 octombrie 2023 16:44:36
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
using ll=long long;
#define S second
#define F first
#define endl '\n'
#define spid ios_base::sync_with_stdio(false);cin.tie(NULL);
const int mod=1e9+7;
const double pi=3.14159265359;
const int maxn=100001;
using namespace std;

int n,depth[maxn];
vector<vector<int>> G(maxn,vector<int>());

void dfs(int i,int parent){
	for(int j=0;j<G[i].size();j++){
		if(G[i][j]!=parent){
			depth[G[i][j]]=depth[i]+1;
			dfs(G[i][j],i);
		}
	}
}

int main(){
	ifstream cin("darb.in");
	ofstream cout("darb.out");
	cin>>n;
	for(int i=0;i<n-1;i++){
		int a,b;
		cin>>a>>b;
		G[a-1].push_back(b-1);
		G[b-1].push_back(a-1);
	}
		dfs(0,-1);
		int nod,maxdist=0;
		for(int i=0;i<n;i++){
			if(depth[i]>maxdist){
				maxdist=depth[i];
				nod=i;
			}
		}
		depth[nod]=0;
		dfs(nod,-1);
		maxdist=0;
		for(int i=0;i<n;i++){
			maxdist=max(maxdist,depth[i]);
		}
		cout<<maxdist+1<<endl;
	
}