Cod sursa(job #2251031)

Utilizator canmihaiCancescu Mihai canmihai Data 1 octombrie 2018 05:40:06
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <fstream>
#include <vector>
#define DIM 1000100
using namespace std;
int n,x,y,coada[DIM],p,f[DIM],fv[DIM],q,u,lm,s2,r,st,dist[DIM],maxim;
vector <int> a[DIM];
void umple(int v[], int n){
    for(int i=0;i<DIM;i++)
        v[i]=n;
    }
int bfs(int s){
    lm=0;
    f[s]=1;
    coada[lm]=s;
    while(lm<=p){
        q=coada[lm];
        st=q;
        for(int i=0;i<a[q].size();i++){
            if(f[a[q][i]]==0){
                r=a[q][i];//cout<<a[q][i]<<" ";
                f[a[q][i]]=1;
                dist[a[q][i]]=dist[q]+1;

          }
            if(fv[a[q][i]]==0){
                coada[++p]=a[q][i];
                fv[a[q][i]]=1;

            }
        }
        lm++;




    }




    return r;
}
int main () {
    ifstream fin("darb.in");
    ofstream fout("darb.out");
    fin>>n;
    while(fin>>x>>y){
        a[x].push_back(y);
        a[y].push_back(x);

    }
    s2=bfs(1);
    umple(f,0);
    umple(fv,0);
    umple(coada,0);
    umple(dist,0);
    s2=bfs(s2);
    fout<<dist[s2]+1;




    return 0;
}