Cod sursa(job #1101063)

Utilizator teoionescuIonescu Teodor teoionescu Data 7 februarie 2014 21:26:51
Problema Diametrul unui arbore Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<string>
#include<queue>
#define abs(x) ((x>0)?(x):(-(x)))
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
#define ll long long
using namespace std;
ifstream in("darb.in");
ofstream out("darb.out");
const int Nmax = 100005;
vector<int> G[Nmax];
int mark[Nmax];
int N,maxl,maxt;
void Dfs(int x,int l){
    mark[x]=1;
    if(l>maxl) maxl=l,maxt=x;
    for(vector<int>::iterator it=G[x].begin();it!=G[x].end();++it){
        if(!mark[*it]){
            Dfs(*it,l+1);
        }
    }
}
int main(){
    in>>N;
    for(int i=1;i<N;i++){
        int x,y;
        in>>x>>y;
        G[x].push_back(y);
        G[y].push_back(x);
    }
    Dfs(1,1);
    memset(mark,0,sizeof(mark));
    maxl=0;
    Dfs(maxt,1);
    out<<maxl<<'\n';
    return 0;
}