아이디어 :
아주 재미있는 생각 문제.
구현 :
1 #INCLUDE <. 비트 / stdc ++ H> 2 사용 스페이스 성병; 3 INT의 체크 (벡터 < INT > & V, 설정 <쌍 < INT , INT >> 및 일) -4- { 5 INT 입술 = 0 ; 6 지도 <쌍 < INT , INT > INT > MP; 도 7 에 대해 ( int로 I = 1 ; i가 = < 6 I ++; ) 8 { 9 대 ( 지능J = 1; J <= 6 ; J ++ ) 10 { 11 MP [make_pair (I, J) = 0 ; 12 } 13 } 14 대 (자동 그것을 세인트)가 15 { 16 INT의 A = V [it.first은 - 1 , B = V [it.second - 1 ]; 17 쌍 < INT , INT > TMP (분 (a, b)에서, max (a, b)); 18 일 경우 (MP [TMP] == 0 ) 19 { 20 MP [TMP = 1 ; 고해상도 ++; 21 } 22 } 23 리턴 입술; 24 } 25 INT 의 main () 26 { 27 INT의 N, M, A, B; 28 일 동안 (CIN >> >> N m) 29 { 30 세트 <쌍 < INT , INT >> 같다 (31) 에 대한이 ( int로 I = 0 ; I <I은 m이 ++ ) 32 { 33 CIN 사항 >> >> B; (34) st.insert (make_pair (분 (a, b)에서, max (a, b))); (35) } (36) 의 경우 (N <= 6 ) {COUT << m << ENDL; 계속 ; } 37 벡터 < INT >은 { 1 , 1 , 2 , 3 , 4 , 5 , 6 }; 38 의 INT maxn = 0 ; 도 39는 어떻게 40 { 41 maxn = 최대 (maxn 체크 (a 세인트을)); 42 } 동안에(next_permutation (a.begin () a.end ())); 43 COUT << maxn << ENDL; 44 } 45 반환 0 ; 46 }