Cod sursa(job #2246509)

Utilizator Raresr14Rosca Rares Raresr14 Data 27 septembrie 2018 10:12:37
Problema Diametrul unui arbore Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <vector>
#define DIM 100010
using namespace std;
ifstream fin("darb.in");
ofstream fout("darb.out");
vector<int> L[DIM];
int c[DIM],f[DIM],i,n,r,l[DIM],maxim,j,sol;
void bfs(int start){
    int p=1;
    int u=1;
    c[1]=start;
    f[start]=1;
    while(p<=u){
        int nod=c[p];
        for(i=0;i<L[nod].size();i++)
            if(f[L[nod][i]]==0){
               f[L[nod][i]]=1;
               c[++u]=L[nod][i];
               l[L[nod][i]]=1+l[nod];
               if(l[L[nod][i]]>maxim){
                    maxim=l[L[nod][i]];
                    r=L[nod][i];
               }
            }
        p++;
    }
}
int main(){
    fin>>n;
    while(fin>>i>>j){
        L[i].push_back(j);
        L[j].push_back(i);
    }
    i=1;
    bfs(i);
    for(i=1;i<=n;i++){
        f[i]=0;
        l[i]=0;
    }
    i=r;
    bfs(i);
    fout<<l[r]+1;
    return 0;
}