Cod sursa(job #2023059)

Utilizator PinkiePie1189Preoteasa Mircea-Costin PinkiePie1189 Data 18 septembrie 2017 09:53:27
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<stdio.h>
#include<vector>
#include<string.h>
#define MAXN 100001
void dfs(int nod,int dist);
std::vector<int> vecini[MAXN];
bool vizitat[MAXN];
FILE*fin,*fout;
int maxdist=-1;
int cap1=1;
int main()
{
    fin=fopen("darb.in","r");
    fout=fopen("darb.out","w");
    int N;
    fscanf(fin,"%d",&N);
    for(int i=1;i<=N;i++)
    {
        int a,b;
        fscanf(fin,"%d%d",&a,&b);
        vecini[a].push_back(b);
        vecini[b].push_back(a);
    }
    dfs(1,0);
    memset(vizitat,0,sizeof(vizitat));
    dfs(cap1,1);
    fprintf(fout,"%d",maxdist);
    fclose(fin);
    fclose(fout);
    return 0;
}
void dfs(int nod,int dist)
{
    vizitat[nod]=1;
    for(int i=0;i<vecini[nod].size();i++)
    {
        if(!vizitat[vecini[nod][i]])
        {
            dfs(vecini[nod][i],dist+1);
        }
    }
    if(dist>maxdist)
    {
        maxdist=dist;
        cap1=nod;
    }
}