Pagini recente » Cod sursa (job #569868) | Cod sursa (job #1184846) | Cod sursa (job #2247714) | pre_oni_gim2015 | Cod sursa (job #2038445)
#include <bits/stdc++.h>
using namespace std;
ifstream F("nrcuv.in");
ofstream G("nrcuv.out");
int a[36][36], n, m, d[3][36], s;
const int MOD = 104659;
char c1, c2;
int main()
{
F >> n >> m;
for( int i = 0; i < m; ++ i )
{
F.get();
F >> c1;
F.get();
F >> c2;
a[ c1 - 'a' ][ c2 - 'a' ] = 1;
a[ c2 - 'a' ][ c1 - 'a' ] = 1;
}
for( char j = 'a'; j <= 'z'; ++ j )
{
d[ 0 ][ j - 'a' ] = 1;
}
for( int i = 1; i <= n; ++ i )
{
if( i % 2 )
{
for( char k = 'a'; k <= 'z'; ++ k )
{
d[ 1 ][ k - 'a' ] = 0;
for( char j = 'a'; j <= 'z'; ++ j )
{
if( !a[ k - 'a' ][ j - 'a' ] )
{
d[ 1 ][ k - 'a' ] += d[ 0 ][ j - 'a' ];
if( d[ 1 ][ k - 'a' ] >= MOD ) d[ 1 ][ k - 'a' ] -= MOD;
}
}
}
continue;
}
for( char k = 'a'; k <= 'z'; ++ k )
{
d[ 0 ][ k - 'a' ] = 0;
for( char j = 'a'; j <= 'z'; ++ j )
{
if( !a[ k - 'a' ][ j - 'a' ] )
{
d[ 0 ][ k - 'a' ] += d[ 1 ][ j - 'a' ];
if( d[ 0 ][ k - 'a' ] >= MOD ) d[ 0 ][ k - 'a' ] -= MOD;
}
}
}
}
for( char j = 'a'; j <= 'z'; ++ j )
{
s += d[ 1 ][ j - 'a' ];
if( s >= MOD ) s -= MOD;
}
G << s;
return 0;
}