Pagini recente » Cod sursa (job #376980) | Cod sursa (job #2863979) | Cod sursa (job #2137208) | Cod sursa (job #2836780) | Cod sursa (job #2836951)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
const int K = 26, N = 1000, buff = 10, mod = 104659;
int dp[N + buff][K + buff];
bool interzis[K + buff][K + buff];
int main(){
int n, m;
char ch;
fin >> n >> m;
fin.get(ch); /// '\n'
while(m--){
int a;
fin.get(ch);
a = ch - 'a' + 1;
fin.get(ch); /// ' '
fin.get(ch);
interzis[a][ch - 'a' + 1] = true;
interzis[ch - 'a' + 1][a] = true;
fin.get(ch); /// '\n'
}
for(int i = 1; i <= K; i++) dp[1][i] = 1;
for(int i = 2; i <= n; i++)
for(int j = 1; j <= K; j++){
for(int k = 1; k <= K; k++)
if(!interzis[j][k])
(dp[i][j] += dp[i - 1][k]) %= mod;
}
int ans = 0;
for(int i = 1; i <= K; i++) (ans += dp[n][i]) %= mod;
fout << ans;
return 0;
}