Cod sursa(job #1552276)

Utilizator c0mradec0mrade c0mrade Data 17 decembrie 2015 17:14:17
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<fstream>
#include<vector>
#include<queue>
using namespace std;

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

vector<int>v[100001];
queue<int>q;
int n,x,y,i,sol,l,a[100001];

void bfs(int root)
{
    a[root]=1;
    q.push(root);
    while(!q.empty())
    {
        int t=q.front();
        l=t;
        q.pop();
        for(i=0;i<v[t].size();++i)
            if(!a[v[t][i]])
            {
                a[v[t][i]]=1;
                q.push(v[t][i]);
            }
    }
}

void dfs(int r,int father,int dmax)
{
    sol=max(sol,dmax);
    for(int i=0;i<v[r].size();++i)
        if(v[r][i]!=father)
            dfs(v[r][i],r,dmax+1);
}

int main(){
    in>>n;
    sol=1;
    for(i=1;i<=n;++i)
    {
        in>>x>>y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
    bfs(1);
    dfs(l,0,1);
    out<<sol;
}