hdu1054

 

 

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
const  int型 MAXN = 1505 ;
int型VIS [MAXN]。
ベクター < INT > E [MAXN]。
INT F [MAXN] [ 2 ]。
ボイド DFS(int型x)は
{ 
    F [X] [ 1 ] = 1 
    F [X] [ 0 ] = 0 以下のためにint型 i = 0 ; iは、Eを<[X] .size(); iは++ 
    { 
        int型 = Y E [X] [I]。
        DFS(Y)。
        F [X] [ 1 ] + =分([Y] [F 0 ]、F [Y] [ 1 ])。
        F [X] [ 0 ] + = F [Y] [ 1 ]。
    } 
    を返します
} 
int型のmain()
{ 
    int型N;
    一方、(scanf関数(" %dの"!、&N)= - 1 
    { 
        memsetの(VIS、0はsizeof (VIS))。
        以下のためにint型 i = 0 ; iがn <; iは、++は
        { 
            int型、B。
            scanf関数("%d個(%d)は"、&​​、&B); 
            E [A] .clear(); 
            INT J = 1 ; J <= Bと、J ++ 
            { 
                int型、C。
                scanf関数(" %のD "、&C)。
                E [A] .push_back(C); 
                VIS [C] = 1 
            } 
        } 
        int型のルート;
        以下のためにint型 i = 0 ; iがn <; iは++ 
        { 
            場合(VIS [I] == 0 
            { 
                ルート= I;
                破ります; 
            } 
        } 
        DFS(ルート)。
        printf(" %Dを\ n "、分(F [ルート] [ 0 ]、F [ルート] [ 1 ]))。
    } 
}

 

おすすめ

転載: www.cnblogs.com/dongdong25800/p/10991432.html