Pagini recente » Cod sursa (job #1504066) | Cod sursa (job #2004180) | Cod sursa (job #2144090) | Cod sursa (job #921424) | Cod sursa (job #2038848)
#include <bits/stdc++.h>
using namespace std;
ifstream F("nrcuv.in");
ofstream G("nrcuv.out");
int a[36][36], n, m, d[3][36];
long long s;
const int MOD = 104659;
char c1, c2;
int main()
{
F >> n >> m;
if( n == 1 )
{
G << 26;
return 0;
}
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 = 2; i <= n; ++ i )
{
if( i % 2 == 0 )
{
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[ 1 ][ k - 'a' ] % MOD + d[ 0 ][ j - 'a' ] % MOD ) % 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[ 0 ][ k - 'a' ] % MOD + d[ 1 ][ j - 'a' ] % MOD ) % MOD;
}
}
}
}
for( char j = 'a'; j <= 'z'; ++ j )
{
s = ( d[ 1 ][ j - 'a' ] % MOD + s % MOD ) % MOD;
}
G << s;
return 0;
}