Cod sursa(job #1856493)

Utilizator mihailarminia1234Arminia Mihail mihailarminia1234 Data 24 ianuarie 2017 22:56:26
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("darb.in");
ofstream g("darb.out");

struct Nod
{
    int info;
    Nod *next;
};

Nod *noduri[100001], *ultimulNod[100001], *nou;

int n,x,y,adancimeMaxima,pf;
bool viz[100001];

void Adauga_in_Lista(int x,int y)
{
    if(ultimulNod[x]==NULL)
        {
            noduri[x]=new Nod;
            noduri[x]->info=y;
            noduri[x]->next=NULL;
            ultimulNod[x]=noduri[x];
        }
        else
        {
            nou=new Nod;
            nou->info=y;
            nou->next=NULL;
            ultimulNod[x]->next=nou;
            ultimulNod[x]=nou;
        }
}

void DFS_special(int nod,int adancime)
{
    Nod *p;
    viz[nod]=true;
    if(adancime>adancimeMaxima)
    {
        adancimeMaxima=adancime;
        pf=nod;
    }
    for(p=noduri[nod];p!=NULL;p=p->next)
        if(!viz[p->info]) DFS_special(p->info,adancime+1);
}

int main()
{
    f>>n;
    for(int i=1;i<n;i++)
    {
        f>>x>>y;
        Adauga_in_Lista(x,y);
        Adauga_in_Lista(y,x);
    }
    DFS_special(1,1);
    for(int i=1;i<=n;i++) viz[i]=false;
    DFS_special(pf,1);
    g<<adancimeMaxima;
    return 0;
}