Pagini recente » Cod sursa (job #1701943) | Cod sursa (job #162617) | Profil trifangrobert | Cod sursa (job #184567) | Cod sursa (job #1854733)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <set>
#define N 30010
using namespace std;
set < int > muc [ N ];
int comp [ 5 ];
int grad [ N ];
int viz [ N ];
set < int > ::iterator it1 ;
int nrsol ;
int fin ;
void back4 ( int nod , int k ){
static int nrvec , i ;
set < int > ::iterator it ;
if ( k == fin ){
nrsol ++ ;
return ;
}
comp [ k ] = nod ;
for ( it = muc[ nod ].begin() ; it!= muc[ nod ].end() ; it ++ ){
if ( viz [ *it ] ){
continue ;
}
if ( *it < nod && k >= 2 ){
continue ;
}
nrvec = 0 ;
for ( i = 1 ; i <= k ; i ++ ){
if ( muc [ *it ].find( comp [ i ] ) != muc [ *it ].end() ){
nrvec ++ ;
}
}
if ( nrvec - k ){
continue ;
}
back4 ( *it , k + 1 );
}
}
int nrnod;
void solve ( int nod , int maxfin ){
set < int > ::iterator it1 ;
back4 ( nod , 1 );
viz [ nod ] = -1 ;
for ( it1 = muc[ nod ].begin() ; it1 != muc[ nod ].end() ; it1++ ){
grad [ *it1 ] -- ;
if ( grad [ *it1 ] < 6 && !viz[ *it1 ] ){
solve( *it1 , maxfin );
}
}
nrnod -- ;
}
int main(){
int n , m , i ;
int x ,y ;
freopen("count.in","r",stdin);
freopen("count.out","w",stdout);
scanf("%d%d",&n,&m);
for ( i = 0 ; i < m ; i++ ){
scanf("%d%d",&x,&y);
muc[ x ].insert( y );
muc[ y ].insert( x );
grad [ x ] ++ ;
grad [ y ] ++ ;
}
nrnod = n ;
fin = 4 ;
while ( nrnod ){
for ( i = 1 ; i <= n ; i ++){
if ( grad [ i ] < 6 && !viz [ i ] ){
solve ( i , fin );
}
}
}
if ( nrsol ){
printf("4 %d",nrsol);
return 0 ;
}
nrnod = n ;
memset ( viz , 0 , sizeof ( viz ) );
for ( i = 1 ; i <= n ; i ++ ){
grad[ i ] = muc[ i ].size();
}
fin = 3 ;
while ( nrnod ){
for ( i = 1 ; i <= n ; i ++){
if ( grad [ i ] < 6 && !viz [ i ] ){
solve ( i , fin);
}
}
}
if ( nrsol ){
printf("3 %d",nrsol );
return 0;
}
memset ( viz , 0 , sizeof ( viz ) );
for ( i = 1 ; i <= n ; i ++ ){
for ( it1 = muc [ i ].begin ( ) ; it1 != muc[ i ].end( ) ; it1 ++ ){
if ( viz [ *it1 ] ){
nrsol ++ ;
}
}
viz [ i ] = -1 ;
}
printf("2 %d",nrsol);
return 0;
}