Cod sursa(job #1001958)
| Utilizator | Data | 26 septembrie 2013 17:18:19 | |
|---|---|---|---|
| Problema | Lista lui Andrei | Scor | 15 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 2.22 kb |
#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,sum;
char ch1,ch2;
litere = 26;
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;
}
for (int i = 0; i < litere; i++) {
contor_impar[i] = 1;
}
for (int k = 1; k < m; 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[i];
}
}
}
} 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_impar[i];
}
}
}
}
}
if (m % 2 == 0) {
for (int i = 0; i < litere; i++) {
sum += contor_par[i];
}
} else {
for (int i = 0; i < litere; i++) {
sum += contor_impar[i];
}
}
printf("%d",sum);
return 0;
}