Pagini recente » Cod sursa (job #2881648) | Cod sursa (job #3170906) | Cod sursa (job #2283404) | Cod sursa (job #2617228) | Cod sursa (job #2081097)
//O(N*(sigma^2))
//Expected 90-100
#include<stdio.h>
#define MAXN 1000
#define MAXSIGMA 26
#define MOD 104659
FILE*fin,*fout;
long long d[MAXN+1][MAXSIGMA+1];
bool adiac[MAXSIGMA+1][MAXSIGMA+1];
int main()
{
fin=fopen("nrcuv.in","r");
fout=fopen("nrcuv.out","w");
int N,M;
fscanf(fin,"%d%d",&N,&M);
fgetc(fin);
for(int i=1;i<=M;i++)
{
char v,u;
v=fgetc(fin);
fgetc(fin);
u=fgetc(fin);
fgetc(fin);
adiac[v-'a'+1][u-'a'+1]=1;
adiac[u-'a'+1][v-'a'+1]=1;
}
for(int i=1;i<=MAXSIGMA;i++)
{
d[1][i]=1;
}
for(int i=2;i<=N;i++)
{
for(int j=1;j<=MAXSIGMA;j++)
{
d[i][j]=0;
for(int k=1;k<=MAXSIGMA;k++)
{
if(!adiac[j][k])
{
d[i][j]+=(d[i-1][k])%MOD;
d[i][j]%=MOD;
}
}
fprintf(stderr,"%lld ",d[i][j]);
}
fprintf(stderr,"\n");
}
long long ans=0;
for(int i=1;i<=MAXSIGMA;i++)
{
ans+=d[N][i];
ans%=MOD;
}
fprintf(fout,"%lld",ans);
fclose(fin);
fclose(fout);
return 0;
}