Pagini recente » Cod sursa (job #1135422) | Cod sursa (job #2446908) | Cod sursa (job #1394368) | Cod sursa (job #630408) | Cod sursa (job #493010)
Cod sursa(job #493010)
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int NMAX = 1005;
const int MODULO = 104659;
const int ALFA = 26;
int N, M;
bool comb[ALFA + 5][ALFA + 5];
int d[NMAX][ALFA + 5];
int suma = 0;
void citire()
{
cin >> N >> M;
char c1, c2;
for(int i = 1 ; i <= M ; i++)
{
cin >> c1 >> c2;
if(c1 > c2)
swap(c1, c2);
comb[c1 - 'a' + 1][c2 - 'a' + 1] = 1;
comb[c2 - 'a' + 1][c1 - 'a' + 1] = 1;
}
}
void dinamic()
{
fill(d[1] + 1, d[1] + ALFA + 1, 1);
for(int i = 2 ; i <= N ; i++)
for(int j = 1 ; j <= ALFA ; j++)
for(int k = 1 ; k <= ALFA ; k++)
if(!comb[j][k])
d[i][j] = (d[i][j] + d[i - 1][k]) % MODULO;
for(int j = 1 ; j <= ALFA ; j++)
suma = (suma + d[N][j]) % MODULO;
}
void scrie()
{
printf("%d\n", suma);
}
int main()
{
freopen("nrcuv.in", "r", stdin);
freopen("nrcuv.out", "w", stdout);
citire();
dinamic();
scrie();
return 0;
}