Pagini recente » Cod sursa (job #995378) | Cod sursa (job #1926592) | Cod sursa (job #2944016) | Cod sursa (job #1039149) | Cod sursa (job #2350389)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
int beet(char c)
{
return (c-'a');
}
bool nope[41][41];
long long boop[2][41];
const int maxi = 104659;
int main()
{
int n, m;
fin >> n >> m;
for(int i = 0; i < m; i++){
char a, b;
int c, d;
fin >> a >> b;
c = beet(a); d = beet(b);
nope[c][d] = nope[d][c] = true;
}
for(int i = 0; i < 26; i++){
boop[0][i] = 1;
}
int curr = 1, prev = 0;
for(int i = 1; i < n; i++){
for(int j = 0; j < 26; j++){
for(int k = 0; k < 26; k++){
if(!nope[j][k]){
boop[curr][k] += boop[prev][j];
boop[curr][k] %= maxi;
}
}
boop[prev][j] = 0;
}
swap(curr, prev);
}
int sum = 0;
for(int i = 0; i < 26; i++){
sum += boop[prev][i];
}
sum %= maxi;
fout << sum;
}