Pagini recente » Cod sursa (job #582943) | Cod sursa (job #3196010) | Cod sursa (job #275801) | Cod sursa (job #1769903) | Cod sursa (job #2295291)
#include <iostream>
#include <fstream>
#include <vector>
#define MOD 104659 ;
using namespace std ;
const int NR = 1005 ;
ifstream f ("nrcuv.in") ;
ofstream g ("nrcuv.out") ;
bool map1 [ 26 ][ 26 ] = { false } ;
int dp [ 26 ][ 2 ] ;
int n , m , s ;
int main ()
{
f >> n >> m ;
for ( int i = 1 ; i <= m ; ++ i )
{
char a , b ; f >> a >> b ;
map1 [ a - 'a' ][ b - 'a' ] = map1 [ b - 'a' ][ a - 'a' ] = true ;
}
for ( int k = 0 ; k <= 25 ; ++ k ) dp [ k ][ 1 ] = 1 ;
for ( int j = 2 ; j <= n ; ++ j )
for ( int i = 0 ; i <= 25 ; ++ i )
{
for ( int k = 0 ; k <= 25 ; ++ k )
if ( !map1 [ k ][ i ] ) dp [ i ][ j % 2 ] += dp [ k ][ ( j + 1 ) % 2 ] ;
dp [ i ][ j % 2 ] %= MOD
}
for ( int i = 0 ; i <= 25 ; ++ i ) s += dp [ i ][ n % 2 ] ;
s %= MOD ;
if ( n == 1 ) g << 26 << "\n" ;
else g << s << "\n" ;
return 0 ;
}