Cod sursa(job #2246504)

Utilizator DanutAldeaDanut Aldea DanutAldea Data 27 septembrie 2018 10:08:03
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <vector>
using namespace std;

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

int n,i,j,p,u,m,f[100001],lung[100001],c[100001];
vector <int> l[100001];

int bfs(int a){
    p=1; u=1;
    c[p]=a;
    f[a]=1;

    while(p<=u){
        for(j=0;j<l[c[p]].size();j++){
            if(f[l[c[p]][j]]==0){
                c[++u]=l[c[p]][j];
                f[l[c[p]][j]]=1;
                lung[l[c[p]][j]]=lung[c[p]]+1;
            }
        }

        p++;
    }

    m=lung[c[u]];

    for(i=1;i<=n;i++){
        lung [i]=0;
        f[i]=0;
    }

    return c[u];
}


int main(){
    fin>>n;
    while(fin>>i>>j){
        l[i].push_back(j);
        l[j].push_back(i);
    }

    bfs(bfs(1));

    fout<<m+1;

    return 0;
}