Pagini recente » Cod sursa (job #451966) | Cod sursa (job #288140) | Cod sursa (job #722862) | Cod sursa (job #675799) | Cod sursa (job #2086896)
#include <fstream>
#include <iostream>
using namespace std;
const int nmax = 1005;
const int mmax = 2005;
const int sigma = 30;
int n, m, sol, dp[nmax][sigma], restrict[sigma][sigma];
char a, b;
int main() {
ifstream fi("nrcuv.in");
ofstream fo("nrcuv.out");
fi >> n >> m;
for (int i = 1; i <= m; i++) {
fi >> a >> b;
restrict[a - 'a'][b - 'a'] = 1;
restrict[b - 'a'][a - 'a'] = 1;
}
for (int j = 'a'; j <= 'z'; j++) dp[1][j - 'a'] = 1;
for (int i = 2; i <= n; i++)
for (int j = 'a'; j <= 'z'; j++)
for (int k = 'a'; k <= 'z'; k++)
if (!restrict[k - 'a'][j - 'a']) {
dp[i][j - 'a'] += dp[i - 1][k - 'a'];
}
for (int j = 'a'; j <= 'z'; j++) sol += dp[n][j - 'a'];
fo << sol << "\n";
fi.close();
fo.close();
return 0;
}