Pagini recente » Cod sursa (job #972318) | Cod sursa (job #1339331) | Cod sursa (job #682712) | Cod sursa (job #1140438) | Cod sursa (job #1515536)
#include <cstdio>
#include <iostream>
#include <set>
#include <climits>
#include <map>
#include <algorithm>
#include <list>
#include <vector>
#include <utility>
using namespace std;
int main() {
freopen("nrcuv.in", "r", stdin);
freopen("nrcuv.out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(0);
int c[30][30], n, m, dp[30][1005];
cin >> n >> m;
for (int i = 0; i < m; i++) {
char a, b;
cin >> a >> b;
c[a - 'a'][b - 'a'] = c[b - 'a'][a - 'a'] = 1;
}
for (int i = 'a'; i <= 'z'; i++) {
dp[i - 'a'][1] = 1;
}
for (int j = 1; j < n; j++) {
for (int i = 'a'; i <= 'z'; i++) {
for (int k = 'a'; k <= 'z'; k++) {
if (c[i - 'a'][k - 'a'] == 0) {
dp[k - 'a'][j + 1] = (dp[k - 'a'][j + 1] + dp[i - 'a'][j]) % 104659;
}
}
}
}
int ans = 0;
for (int i = 'a'; i <= 'z'; i++) {
ans = (ans + dp[i - 'a'][n]) % 104659;
}
cout << ans;
return 0;
}