Cod sursa(job #2703296)

Utilizator Georgiana1904Georgiana Voicea Georgiana1904 Data 8 februarie 2021 00:03:34
Problema Diametrul unui arbore Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream f ("darb.in");
ofstream g ("darb.out");
int a[1000][1000],lant[1000];

struct nrlant{
   int lung,nod;
};

void citire_arb(int n)
{
    int x,y;
    while(n)
    {
        f>>x>>y;
        a[x][y]=a[y][x]=1;
        n--;
    }
}

int frunza(int n,int i,int &noda)
{
    int j,s=0;
    for(j=1;j<=n;j++)
    {
        if(a[i][j]==1)
            s++,noda=j;
        if(s>1) break;
    }
   return s==1;
}
int lungime_l(int n,int noda)
{
    int i;
    int s=2;
    while(noda>1)
    {
        for(i=1;a[noda][i]==0;i++);
         s++;
        noda=i;
    }
    return s;
}
int main()
{
    int n,i,s1=0,s2=0,noda,x=0;
    f>>n;
    citire_arb(n);
    for(i=1;i<=n;i++)
     {
      if(frunza(n,i,noda)) x=lungime_l(n,noda);
       if(x>s1)  s1=x;
       else if(x>s2) s2=x;
     }
     g<<s1+s2-1;
    f.close();
    g.close();
    return 0;
}