Pagini recente » Cod sursa (job #2791335) | Cod sursa (job #90120) | Cod sursa (job #1931632) | Cod sursa (job #1723439) | Cod sursa (job #2152450)
#include<fstream>
#include<bitset>
using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
const int MOD = 104659, ALPHSZ = 26, NMAX = 1e3 + 5;
bitset<NMAX> alph[NMAX];
int wordsCnt[NMAX][NMAX];
int wordsLen, forbsCnt;
inline void readData(){
fin >> wordsLen >> forbsCnt;
char from, to;
while(forbsCnt--){
fin >> from >> to;
alph[from - 'a'][to - 'a'] = true;
alph[to - 'a'][from - 'a'] = true;
}
}
inline int get_wordsCnt(){
int length, letter, prevLetter, ans = 0;
for(letter = 0; letter < 26; ++letter)
wordsCnt[1][letter] = 1;
for(length = 2; length <= wordsLen; ++length)
for(letter = 0; letter < 26; ++ letter)
for(prevLetter = 0; prevLetter < 26; ++prevLetter)
if(alph[prevLetter][letter] == false)
wordsCnt[length][letter] = (wordsCnt[length][letter] + wordsCnt[length - 1][prevLetter]) % MOD;
for(letter = 0; letter < 26; ++letter)
ans = (ans + wordsCnt[wordsLen][letter]) % MOD;
return ans;
}
int main(){
readData();
fout << get_wordsCnt();
}