Pagini recente » Cod sursa (job #2669871) | Cod sursa (job #2370131) | Cod sursa (job #3236294) | Cod sursa (job #855880) | Cod sursa (job #1001981)
#include<stdio.h>
#include<string.h>
bool nepotrivire[30][30];
int contor_par[30];
int contor_impar[30];
int main()
{
int n,k,i,j,m,litere;
char ch1,ch2;
litere = 26;
int sum = 0;
freopen("nrcuv.in","r",stdin);
freopen("nrcuv.out","w",stdout);
scanf("%d%d\n",&n,&m);
k = m;
while(k--)
{
scanf("%c %c\n",&ch1,&ch2);
nepotrivire[ch1-'a'][ch2-'a'] = true;
nepotrivire[ch2-'a'][ch1-'a'] = true;
}
m++;
for (int i = 0; i < litere; i++) {
contor_impar[i] = 1;
}
for (int k = 1; k < n; k++) {
if (k % 2 == 0) {
if (k > 0) {
memcpy(contor_par,contor_impar,sizeof(contor_par));
}
for (int i = 0; i < litere; i++) {
contor_impar[i] = 0;
}
for (int i = 0; i < litere; i++) {
for (int j = 0; j < litere; j++) {
if (!nepotrivire[i][j]) {
contor_impar[j] = contor_par[j] + contor_impar[i];
contor_impar[j] = contor_impar[j] % 104659;
}
}
}
} else {
if (k > 1) {
memcpy(contor_impar,contor_par,sizeof(contor_impar));
}
for (int i = 0; i < litere; i++) {
contor_par[i] = 0;
}
for (int i = 0; i < litere; i++) {
for (int j = 0; j < litere; j++) {
if (!nepotrivire[i][j]) {
contor_par[j] = contor_par[j] + contor_impar[i];
contor_par[j] = contor_par[j] % 104659;
}
}
}
}
}
if (n % 2 == 0) {
for (int i = 0; i < litere; i++) {
sum = sum + contor_par[i];
sum = sum % 104659;
}
} else {
for (int i = 0; i < litere; i++) {
sum = sum + contor_impar[i];
sum = sum % 104659;
}
}
printf("%d",sum);
return 0;
}