Pagini recente » Cod sursa (job #1161105) | Cod sursa (job #1700092) | Cod sursa (job #1717022) | Cod sursa (job #2392946) | Cod sursa (job #1491156)
#include <stdio.h>
#include <string.h>
#include <vector>
#define MAX 1005
#define MOD 104659
using namespace std;
int n, m, i, j, k, d[MAX][30], rez;
char x, y;
vector<int> l[MAX], v[MAX];
bool a[30];
int main(){
freopen("nrcuv.in", "r", stdin);
freopen("nrcuv.out", "w", stdout);
scanf("%d%d\n", &n, &m);
for(i = 0; i < m; i++){
scanf("%c %c\n", &x, &y);
l[x - 'a'].push_back(y - 'a');
l[y - 'a'].push_back(x - 'a');
}
for(i = 0; i < 26; i++){
memset(a, 0, sizeof(a));
for(j = 0; j < l[i].size(); j++)
a[l[i][j]] = 1;
for(j = 0; j < 26; j++)
if(!a[j])
v[i].push_back(j);
}
for(i = 0; i < 26; i++)
d[0][i] = 1;
for(i = 1; i < n; i++)
for(j = 0; j < 27; j++)
for(k = 0; k < v[j].size(); k++)
d[i][j] = (d[i][j] + d[i - 1][v[j][k]]) % MOD;
for(i = 0; i < 26; i++)
rez = (rez + d[n - 1][i]) % MOD;
printf("%d\n", rez);
return 0;
}