Cod sursa(job #1179389)

Utilizator AndreiOprisanFMI - Oprisan Andrei Daniel AndreiOprisan Data 28 aprilie 2014 16:57:53
Problema Diametrul unui arbore Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include<iostream>
#include<stdio.h>
#include<vector>
#include<string.h>
using namespace std;
vector<int> v[1000001];
int n,viz[1000001],contor[100001],last,diametru;
void DF(int i)
{
    static int pas=0;
    viz[i]=1;
    if(pas==0)
      contor[i]=1;
    for(int j=0;j<v[i].size();j++)
    {
        if(viz[v[i][j]]==0)
        {
          contor[v[i][j]]=contor[i]+1;
          diametru=contor[v[i][j]];
          last=v[i][j];
          DF(v[i][j]);
        }
        else
        {
            memset(contor,0,100001);
            memset(viz,0,100001);
        }
    }
}
int main()
{
    FILE *f=fopen("darb.in","r"),*g=fopen("darb.out","w");
    int n,a,b;
    fscanf(f,"%d",&n);
    for(int i=0;i<n-1;i++)
    {
        fscanf(f,"%d%d",&a,&b);
        v[a].push_back(b);
        v[b].push_back(a);
    }
    fclose(f);
    DF(1);
    DF(last);
    fprintf(g,"%d",diametru);
    fclose(g);
    return 0;
}