Pagini recente » Cod sursa (job #2434745) | Cod sursa (job #1714688) | Cod sursa (job #428739) | Cod sursa (job #2415533) | Cod sursa (job #5439)
Cod sursa(job #5439)
#include <cstdio>
int n, m, x[1024][27][256];
int sol[256];
int c[128][128];
void add(int A[], int B[])
{
int i, t = 0;
for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
A[i] = (t += A[i] + B[i]) % 10;
A[0] = i - 1;
}
void mul(int A[], int B)
{
int i, t = 0;
for (i = 1; i <= A[0] || t; i++, t /= 10)
A[i] = (t += A[i] * B) % 10;
A[0] = i - 1;
}
void sub(int A[], int B[])
{
int i, t = 0;
for (i = 1; i <= A[0]; i++)
A[i] += (t = (A[i] -= B[i] + t) < 0) * 10;
for (; A[0] > 1 && !A[A[0]]; A[0]--);
}
void citire()
{
freopen("nrcuv.in", "r", stdin);
scanf("%d %d\n", &n, &m);
int i;
for(i=1;i<=m;i++)
{
char p, q;
scanf("%c %c\n", &p, &q);
c[p][q]=1;
c[q][p]=1;
}
}
//long long x[1024][27];
//long long sol=0;
/*
void calc()
{
int i, j, k;
sol=0;
for(i=0;i<26;i++)x[1][i]=1;
for(i=2;i<=n;i++)
for(j=0;j<26;j++)
for(k=0;k<26;k++) if(!c[j+'a'][k+'a']) x[i][j]+=x[i-1][k];
for(i=0;i<26;i++) sol+=x[n][i];
printf("%lld\n", sol);
}
*/
void calcul()
{
sol[0]=1;
sol[1]=0;
int i, j, k;
for(i=0;i<26;i++) { x[1][i][0]=1; x[1][i][1]=1;}
for(i=1;i<=n;i++)
for(j=0;j<26;j++) x[i][j][0]=1;
for(i=2;i<=n;i++)
for(j=0;j<26;j++)
for(k=0;k<26;k++)
if(!c[j+'a'][k+'a'] && !c[j+'a'][k+'a']) add(x[i][j], x[i-1][k]);
for(i=0;i<26;i++) add(sol, x[n][i]);
for(i=sol[0];i>0;i--) printf("%d", sol[i]);
printf("\n");
}
int main()
{
freopen("nrcuv.out", "w", stdout);
citire();
calcul();
return 0;
}