Cod sursa(job #2403881)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 12 aprilie 2019 00:13:32
Problema Zvon Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <bits/stdc++.h>
#define pb push_back
using namespace std ;
const int NR = 100005 ;
ifstream in ("zvon.in") ;
ofstream out ("zvon.out") ;
vector < int > v [ NR ] ;
int n , t [ NR ] ;
void dfs ( int nod , int father )   {
    if ( v [ nod ].size() == 1 )    return ;
    int i ;
    vector < int > :: iterator it ;
    int tl [  v [ nod ].size() + 5 ] = {0} , cnt = 0 ;
    t [ nod ] = v [ nod ].size() - 1 ;
    for ( it = v [ nod ].begin() ; it != v [ nod ].end() ; ++ it )  {
        if ( father == *it )    continue ;
        dfs ( *it , nod ) ;
        tl [ ++ cnt ] = t [ *it ] ;
    }
    sort ( tl + 1 , tl + cnt + 1 ) ;
    for ( i = 1 ; i <= cnt ; ++ i )
    t [ nod ] += max ( 0 , tl [ i ] - i + 1 ) ;
}
int main () {
    int i , x , y , nrt ;
    in >> nrt ;
    while ( nrt -- )  {
    in >> n ;
    v [ 1 ].pb ( 0 ) ;
    for ( i = 1 ; i < n ; ++ i )    {
        in >> x >> y ;
        v [ x ].pb ( y ) ;
        v [ y ].pb ( x ) ;
    }
    dfs( 1 , 0 ) ;
    out << t [ 1 ] << '\n' ;
    for ( int i = 1 ; i <= n ; t [ i ] = 0 , v [ i ++ ].clear() ) ;
    }
}