Cod sursa(job #2738306)

Utilizator andreicosmaAndrei Cosma andreicosma Data 5 aprilie 2021 17:48:46
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <bitset>
#include <deque>
#include <cstring>
#include <algorithm>
#define dim 100006

using namespace std;
string file = "darb";
ifstream fin(file + ".in");
ofstream fout(file + ".out");
vector<int> L[dim], lNiv[dim];
bitset<dim> fr;
int n, m, nod1, nod2, x, y, dist[dim], distMax, nodMax;


inline void bfs( int start ){
    memset(dist, 0, sizeof(dist));
    deque<int> q;
    q.push_back(start);
    fr.reset();
    fr[start] = 1;
    
    while(!q.empty()){
        int nod = q.front();
        if(distMax < dist[nod]){
            distMax = dist[nod];
            nodMax = nod;
        }
        q.pop_front();
        
        for( auto vecin : L[nod] )
            if(!fr[vecin]){
                q.push_back(vecin);
                dist[vecin] = dist[nod] + 1;
                fr[vecin] = true;
            }
    }
}



inline void citire(){
    fin>>n;
    while(fin>>x>>y){
        L[x].push_back(y);
        L[y].push_back(x);
    }
}


int main(){
    citire();
    bfs(1);
    distMax = 0;
    bfs(nodMax);
    fout<<distMax+1;
    
    return 0;
}