Cod sursa(job #1709019)

Utilizator UAIC_The_RobotsUAIC-Tucar-Onesim-Vintur UAIC_The_Robots Data 28 mai 2016 10:36:29
Problema Revolta Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.18 kb
#include <iostream>
#include<stdio.h>
#include<vector>
using namespace std;
#define nmax 100005
vector <int> ma[nmax];
vector <int> ::iterator it;

int inc, sf, co[nmax],t,n,a,b,ult,lung,sol, el, dist[nmax];
bool viz[nmax];

void bfs(int s){
    inc=sf=1;
    co[1]=s;
    viz[s]=1;
    dist[s]=0;
    while (inc<=sf){
        el=co[inc];
        inc++;
        for (it=ma[el].begin();it!=ma[el].end();it++)
            if (!viz[*it]){
                dist[*it]=dist[el]+1;
                co[++sf]=(*it);
                viz[(*it)]=1;
            }
    }
}

int main()
{
    freopen("revolta.in","r",stdin);
    freopen("revolta.out","w",stdout);
    scanf("%d",&t);
    while (t--){
        scanf("%d",&n);
        for (int i=1;i<n;i++){
            scanf("%d %d",&a,&b);
            ma[a].push_back(b);
            ma[b].push_back(a);
        }
        bfs(0);
        ult=co[n];
        for (int i=0;i<n;i++)
            viz[i]=dist[i]=0;
        bfs(ult);
        lung=dist[co[n]];
        sol= (lung-1+1)/2+1;
        printf("%d\n",sol);
        for (int i=0;i<n;i++){
            ma[i].clear();
            viz[i]=0;
        }
    }
    return 0;
}