Cod sursa(job #2575604)

Utilizator Liviu_Ionut_MoantaMoanta Ionut Liviu Liviu_Ionut_Moanta Data 6 martie 2020 14:37:06
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
int n,m,a,b,i,j,nr,k,fiu,t,minim;
vector<int>L[100005];
int sol[100005],D[100005],maxim[100005];
void dfs(int nod){
    sol[nod]=1;
    D[nod]=1;
    for(int i=0;i<L[nod].size();i++){
        int fiu=L[nod][i];
        if(sol[fiu]==0){
            dfs(fiu);
            if(1+D[fiu]>=D[nod]){
                D[nod]=1+D[fiu];
                maxim[nod]=fiu;
            }
        }
    }
}
int main(){
    fin>>n;
    for(i=1;i<n;i++){
        fin>>a>>b;
        L[a].push_back(b);
        L[b].push_back(a);
    }
    dfs(5);
    int t=1;
    while(maxim[t]!=0){
        t=maxim[t];
    }
    for(i=1;i<=n;i++){
        sol[i]=0;
        D[i]=0;
        maxim[i]=0;
    }
    dfs(t);
    int q=t;
    int k=1;
    while(maxim[q]!=0){
        q=maxim[q];
        k++;
    }
    fout<<k;
    return 0;
}