시간 제한 :
1000 MS 메모리 제한 : 26만2천1백44킬로바이트 자세한 제한
1 #INCLUDE <iostream> 2 #INCLUDE <cstdio> 3 #INCLUDE <CString을> 4 #DEFINE maxn 210 5 이용 스페이스 성병; 6 INT의 N, m, g [maxn] maxn, ANS 경기 [maxn]; 7 BOOL [maxn] F; 8 INT 의 Dfs ( INT를 들) (9) { 10 대 ( int로 난 = 1 난 ++; i가 N = < ) (11) 의 경우 (F [I] == 0 && g [S] [I] == 1 ) 12 { 13 (F)의 [ I =1 ; 14 의 경우 (매치 [I] == 0 || 의 Dfs (매치 [I])) 15 { 16 매치 [I] =에서 S; 17 창 1 ; 18 } 19 } 20 반환 0 ; 21 } 22 INT 의 main () 23 { 24 는 scanf ( " %의 D % d에 " , N, m); 25 INT의 X, Y, ANS = N; 26 대 ( INT I = 1; I <= m; 내가 ++ ) 27 { 28 는 scanf ( " % d 개 %의 D ' , X, ) Y; 29 g의 [X] [Y]는 = 1 ; 30 } 31 대 ( INT에 K = 1 ; K <N = k 번째 ++ ) 32 대 ( INT I = 1 ; I <= N; 나는 ++ ) 33 대 ( INT J = 1 ; J <= N; J ++ ) 34의 g의 [ I] [J] = g [I] [J] || (g [I] [K] && g [K] [J]); 35 대 ( int로 I =1 ; 나는 <= N; ++ i가 ) 36 { 37 memset 함수 (F, 0 , sizeof 연산자를 (F)); 38 ans- = 의 Dfs (I); 39 } 40 의 printf ( " % D \ 없음 " , ANS); 41 반환 0 ; 42 }