Cod sursa(job #1164236)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 1 aprilie 2014 22:48:29
Problema Diametrul unui arbore Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include<cstdio>
#include<vector>
using namespace std;
vector<int>L[100100];
int n,m,i,j,a,b,c[2][100100],v[100100],x[100100],p,u,d[100100],poz,nmax;
FILE *f,*g;
void dfs(int nod){
    x[nod]=1;
    for(i=0;i<L[nod].size();i++){
        if(x[L[nod][i]]==0){
            d[L[nod][i]]=d[nod]+1;
            if(d[L[nod][i]]>nmax)
                nmax=d[L[nod][i]];
            dfs(L[nod][i]);
        }
    }
}
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){
                v[L[a][i]]=1;
                c[0][++u]=L[a][i];
                c[1][u]=c[1][u]+1;
                poz=c[0][u];
            }
        }
        p++;
    }
    nmax=0;
    d[poz]=1;
    dfs(poz);
    fprintf(g,"%d",nmax);





    fclose(f);
    fclose(g);
    return 0;
}