Cod sursa(job #1474278)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 21 august 2015 17:37:50
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <cstdio>
#include <vector>
#define LIM 100023
using namespace std;
int pos,n,vis[LIM];
vector<int>adj[LIM];
struct qu
{
    int nod;
    int dist;
}a[LIM];
void bfs(int inc)
{
    for(int i=1;i<=n;i++)
    {
        a[i].nod=0;
        a[i].dist=0;
        vis[i]=0;
    }
    pos=2;
    a[1].nod=inc;
    vis[inc]=1;
    for(int i=1;i<=n;i++)
    {
        vector<int>::iterator it;
        for(it=adj[a[i].nod].begin();it!=adj[a[i].nod].end();++it)
        {
            if(vis[*it]==0)
            {
                vis[*it]=1;
                a[pos].nod=*it;
                a[pos].dist=a[i].dist+1;
                ++pos;
            }
        }
    }
}
int main()
{
    freopen ("darb.in","r",stdin);
    freopen ("darb.out","w",stdout);
    scanf("%d",&n);
    int x,y;
    for(int i=1;i<n;i++)
    {
        scanf("%d%d",&x,&y);
        adj[x].push_back(y);
        adj[y].push_back(x);
    }
    bfs(1);
    bfs(a[pos-1].nod);
    printf("%d\n",a[pos-1].dist+1);
}