Cod sursa(job #2813259)

Utilizator As932Stanciu Andreea As932 Data 6 decembrie 2021 10:27:12
Problema Diametrul unui arbore Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <bits/stdc++.h>

using namespace std;

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

const int nmax = 100005;

int n, last, diam;
bool vis[nmax];
int d[nmax];
vector <int> edges[nmax];

void read(){
    fin >> n;

    for(int i = 1; i < n; i++){
        int x, y;
        fin >> x >> y;
        edges[x].push_back(y);
        edges[y].push_back(x);
    }
}

void bfs(int start){
    memset(vis, 0, sizeof(vis));
    memset(d, 0, sizeof(d));

    queue <int> q;
    q.push(start);
    vis[start] = true;
    d[start] = 1;

    while(!q.empty()){
        int x = q.front();
        q.pop();

        for(int i = 0; i < edges[x].size(); i++){
            int y = edges[x][i];

            if(!vis[y]){
                q.push(y);
                vis[y] = true;
                d[y] = d[x] + 1;

                last = y;
                diam = d[y];
            }
        }
    }
}

int main()
{
    read();
    bfs(1);
    bfs(last);
    fout << diam;

    return 0;
}