Go directlyCode.
/* * Hdu1083/win. cpp * created on: 2012-8-16 * Author: Ben */ # Include <Cstdio> # Include <Cstdlib> # Include <Cstring> # Include <Cmath> # Include <Ctime> # Include <Iostream> # Include <Algorithm> # Include <Queue># Include < Set > # Include <Map> # Include <Stack> # Include < String > # Include <Vector> # Include <Deque> # Include <List> # Include <Functional> # Include <Numeric> # Include <Cctype> Using Namespace STD; Const Int Maxn = 305 ; Vector < Int > Mymap [maxn]; Int N, m, mymatch [maxn]; Bool Visited [maxn]; Void Init (){ For ( Int I = 0 ; I <n; I ++ ) {Mymap [I]. Clear ();}} Bool DFS ( Int K ){ Int T, I; For ( Int I = 0 ; I <( Int ) Mymap [K]. Size (); I ++ ) {I = Mymap [k] [I]; If (! Visited [I]) {visited [I] = True ; T = Mymatch [I]; mymatch [I] = K; If (T =- 1 | DFS (t )){ Return True ;} Mymatch [I] = T ;}} Return False ;} Int Hungary () {memset (mymatch, - 1 , Sizeof (Mymatch )); Int Ans = 0 ; For ( Int I = 0 ; I <n; I ++ ) {Memset (visited, False , Sizeof (Visited )); If (DFS (I) {ans ++ ;}} Return Ans ;} Bool Buildgraph (){ Int T, K; Init (); For (Int I = 0 ; I <n; I ++ ) {Scanf ( " % D " ,& K ); For ( Int K = 0 ; K <K; k ++ ) {Scanf ( " % D " ,&T); mymap [I]. push_back (T - 1 );}} Return True ;} Int Main () {# ifndef online_judge freopen ( " Data. In " , " R " , Stdin ); # Endif Int T, P; scanf ( " % D " ,& T ); While (T -- ) {Scanf ( " % D " , & N ,& P); buildgraph (); puts (Hungary () = N? " Yes " :" No " );} Return 0 ;}