Cod sursa(job #2306955)

Utilizator papinub2Papa Valentin papinub2 Data 23 decembrie 2018 13:37:15
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

const int Nmax = 100005;

vector<int> A[Nmax];

void BFS(int Start, int&nod, vector<int>&viz, queue<int>&Q)
{
    Q.push(Start);
    viz[Start] = 1;

    while (!Q.empty())
    {
        nod = Q.front();
        Q.pop();

        for (auto i = 0; i < A[nod].size(); i++)
        {
            int nod_curent = A[nod][i];
            if (!viz[nod_curent])
            {
                viz[nod_curent] = viz[nod] + 1;
                Q.push(nod_curent);
            }
        }
    }
}

int main()
{
    int n, nod;

    in.sync_with_stdio(false);
    in >> n;

    queue<int> Q;
    vector<int> viz(n + 1);

    for (int i = 1; i <= n; i++)
    {
        int x, y;
        in >> x >> y;

        A[x].push_back(y);
        A[y].push_back(x);
    }

    BFS(1, nod, viz, Q);
    for (int i = 1; i <= n; i++)
        viz[i] = 0;
    BFS(nod, nod, viz, Q);

    out << viz[nod];
    return 0;
}