Cod sursa(job #1487067)

Utilizator DeltaMTP Dragos DeltaM Data 16 septembrie 2015 01:00:04
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include<cstdio>
#include<vector>
using namespace std;
vector<int>L[100100];
int n,a,b,i,j,p,u,vmax,poz,c[2][100100],v[100100],x[100100],d[100100];
FILE *f,*g;
int main(){
    f=fopen("darb.in","r");
    g=fopen("darb.out","w");
    fscanf(f,"%d",&n);
    for(i=1;i<n;i++){
        fscanf(f,"%d%d",&a,&b);
        L[a].push_back(b);
        L[b].push_back(a);
    }
    c[0][1]=1;
    u=p=1;
    while(p<=u){
        a=c[0][p];
        for(i=0;i<L[a].size();i++){
            if( v[ L[a][i] ] == 0  ){
                c[0][++u]=L[a][i];
                c[1][u]=c[1][p]+1;
                v[ L[a][i] ] = 1;
                b=c[0][u];
            }
        }
        p++;
    }
    c[0][1]=b;
    c[1][1]=1;
    p=u=1;
    while(p<=u){
        a=c[0][p];
        for(i=0;i<L[a].size();i++){
            if( x[ L[a][i] ] == 0 ){
                c[0][++u]=L[a][i];
                c[1][u]=c[1][p]+1;
                vmax=c[1][u];
                x[ L[a][i] ] = 1;
            }
        }
        p++;
    }
    fprintf(g,"%d",vmax);
    fclose(f);
    fclose(g);
    return 0;
}