Cod sursa(job #2386091)

Utilizator Moise_AndreiMoise Andrei Moise_Andrei Data 22 martie 2019 10:05:05
Problema Diametrul unui arbore Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <queue>
#include <cstring>
using namespace std;
ifstream in("darb.in");
ofstream out("darb.out");
vector <int> v[1000005];
queue <int> q;
int n, c[1000005], viz[1000005], last, rez;
inline void f(int a)
{
    memset(c, 0, 1000005);
    memset(viz, 0, 1000005);
    q.push(a);
    c[a] = 1;
    viz[a] = 1;
    int x;
    while(!q.empty())
    {
        x = q.front();
        for(int i = 0; i < v[x].size(); i++)
        {
            if(viz[v[x][i]] == 0)
            {
                q.push(v[x][i]);
                c[v[x][i]] = c[x] + 1;
                viz[v[x][i]] = 1;
                rez = c[v[x][i]];
                last = v[x][i];
            }
        }
        q.pop();
    }
}
int main()
{
    in >> n;
    for(int i = 0; i < n - 1; i++)
    {
        int a, b;
        in >> a >> b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    f(1);
    f(last);
    out << rez;
    return 0;
}