Cod sursa(job #76191)

Utilizator MarcvsHdrMihai Leonte MarcvsHdr Data 8 august 2007 20:23:21
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
# include <stdio.h>

const long int MAXN=1000;
const int TRANSF=(int)'a'-1;
long int n,m;
long int a[MAXN+1][27];
long int allowed[27][27];
const long int MODULO=104659;

void citire()
{
FILE *f=fopen("nrcuv.in","r");
fscanf(f,"%ld%ld",&n,&m);
long int i;
char aa,bb,s[100];
fgets(s,100,f);
for (i=1;i<=m;i++)
	{
	fgets(s,100,f);
	aa=s[0];bb=s[2];
	allowed[(int)aa-TRANSF][(int)bb-TRANSF]=1;
	allowed[(int)bb-TRANSF][(int)aa-TRANSF]=1;
	}
fclose(f);
}

void scrie(long int sol)
{
FILE *g=fopen("nrcuv.out","w");
fprintf(g,"%ld\n",sol);
fcloseall();
}

void calculeaza()
{
long int i,j,jj;
for (j=1;j<=26;j++) a[1][j]=1;
for (i=2;i<=n;i++)
	for (j=1;j<=26;j++)
		{
		for (jj=1;jj<=26;jj++)
			if (allowed[j][jj]==0)
				{
				a[i][j]+=a[i-1][jj];
				a[i][j]%=MODULO;
				}
		}
long int sol=0;
for (j=1;j<=26;j++)
	{
	sol+=a[n][j];
	sol%=MODULO;
	}
scrie(sol);
}

int main()
{
citire();
calculeaza();
return 0;
}