Cod sursa(job #2403931)

Utilizator alex2209alexPavel Alexandru alex2209alex Data 12 aprilie 2019 08:39:51
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.24 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("darb.in");
ofstream g("darb.out");
//--------------------------------
//Variabile globale
int n,dist[100001];
vector<int>v[100001];
//--------------------------------
//Functii
void citire();
void rezolvare();
int bfs(int);
//--------------------------------
int main()
{
    citire();
    rezolvare();
    return 0;
}
//--------------------------------
int bfs(int x)
{
    queue<int>q;
    for(int i = 1;i <= n;++i)
        dist[i] = n + 3;
    dist[x] = 1;
    q.push(x);
    while(!q.empty())
    {
        x=q.front();
        q.pop();
        for(int i = 0;i < v[x].size();++i)
            if(dist[v[x][i]] == n + 3)
            {
                dist[v[x][i]] = dist[x] + 1;
                q.push(v[x][i]);
            }
    }
    return x;
}
//--------------------------------
void rezolvare()
{
    int x,ma = 0;
    x = bfs(1);
    bfs(x);
    for(int i = 1;i <= n;++i)
        if(dist[i] > ma)
            ma = dist[i];
    g << ma;
}
//--------------------------------
void citire()
{
    f >> n;
    for(int i = 1;i < n;++i)
    {
        int a,b;
        f >> a >> b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
}