Pagini recente » Cod sursa (job #281123) | Cod sursa (job #3221267) | Cod sursa (job #2762721) | Cod sursa (job #540877) | Cod sursa (job #3002493)
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX = 1000;
const int LMAX = 26;
const int MOD = 104659;
int lista[LMAX][LMAX];
int dp[NMAX][LMAX];
int cuv(int i, int j){
if(i == 1)
return 1;
if(dp[i][j] != 0){
return dp[i][j];
}
for(int l = 0; l < LMAX; l++){
if(lista[j][l] == 0)
dp[i][j] = (dp[i][j] + cuv(i-1, l))%MOD;
}
return dp[i][j];
}
int main()
{
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
int n, m;
fin >> n >> m;
for(int i = 0; i < m; i++){
char a, b;
fin.get(a);
fin.get(a);
fin.get(b);
fin.get(b);
lista[a - 'a'][b - 'a'] = 1;
lista[b - 'a'][a - 'a'] = 1;
}
int rez = 0;
for(int i = 0; i < LMAX; i++){
rez = (rez + cuv(n, i))%MOD;
}
fout << rez;
fin.close();
fout.close();
return 0;
}