Cod sursa(job #2444066)

Utilizator PaterucAPetruc Andrei Stefan PaterucA Data 30 iulie 2019 11:41:42
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;

ifstream inf("darb.in");
ofstream outf("darb.out");

const int N=100010;

int n, sol, lst;
vector<int> v[N];
vector<int> cont(N, 0);
vector<bool> vis(N);

void bfs(int );

int main()
{
    inf>>n;
    for(int i=1; i<=n; i++)
    {
        int x, y;
        inf>>x>>y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
    bfs(1);
    bfs(lst);
    outf<<sol;
    return 0;
}

void Clear()
{
    for(int i=1; i<N; i++)
        cont[i]=0,vis[i]=false;
}

void bfs(int st)
{
    Clear();
    queue<int> q;
    q.push(st);
    vis[st]=1;
    cont[st]=1;
    while(!q.empty())
    {
        int x=q.front();
        q.pop();
        for(auto it:v[x])
        {
            if(!vis[it])
            {
                vis[it]=1;
                cont[it]=cont[x]+1;
                lst=it;
                sol=cont[it];
                q.push(it);
            }
        }
    }

}