Pagini recente » Cod sursa (job #375661) | Cod sursa (job #1709402) | Cod sursa (job #2508564) | Cod sursa (job #2271928) | Cod sursa (job #331660)
Cod sursa(job #331660)
/* Relatia de recurenta:
v[i][j]+=v[i-1][k] | a[j][k]!=1 && a[k][j]!=1
Rez=suma(v[n][i]) i=1,26
*/
#include <cstdio>
#define MOD 104659
#define L 26
#define DIM 1003
#define V 96
int a[DIM][DIM],s,v[DIM][DIM],n,m1,m2,m,i;
char l1,l2;
using namespace std;
int read()
{
char j,k;
scanf("%d%d\n",&n,&m);
for (i=1; i<=m; ++i)
{
scanf("%c %c\n",&j,&k);
a[j-V][k-V]=1;
a[k-V][j-V]=1;
}
return 0;
}
int solve()
{
int j,k;
for (i=1; i<=L; ++i) v[1][i]=1;
for (i=2; i<=n; ++i) //dimensiunea i
for (j=1; j<=L; ++j) // ultma litera j
for (k=1; k<=L; ++k) // //toate cuvinte de dimensiunea i cu ultima litera j vecina cu k
if ( !a[j][k] && !a[k][j] )
v[i][j]=(v[i][j]+v[i-1][k])%MOD;
for (i=1; i<=L; ++i) s=(s+v[n][i])%MOD;
printf("%d",s);
return 0;
}
int main()
{
freopen("nrcuv.in","r",stdin);
freopen("nrcuv.out","w",stdout);
read();
solve();
return 0;
}