Cod sursa(job #757160)

Utilizator gegeadDragos Gegea gegead Data 11 iunie 2012 11:52:59
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<cstdio>
int a[27][1001],s,n;
bool b[27][27];



int lista(int x, int i)
{
	int j;
	if(x==1)
	{
		if(n==1)
			++s;
		return 1;
	}
	for(j=1;j<=26;++j)
		if(!b[j][i])
			if(a[j][x-1]==0)
				a[i][x]=(a[i][x]%104659+lista(x-1,j)%104659)%104659;
			else
				a[i][x]=(a[i][x]%104659+a[j][x-1]%104659)%104659;
	if(x==n)
		s=(s+a[i][x]%104659)%104659;
	return a[i][x];
}
	

int main()
{
	freopen("nrcuv.in","r",stdin);
	freopen("nrcuv.out","w",stdout);
	int m,i;
	char x,y;
	scanf("%d %d\n",&n,&m);
	for(i=1;i<=m;++i)
	{
		scanf("%c %c\n",&x,&y);
		x-='a';y-='a';
		b[x+1][y+1]=b[y+1][x+1]=1;
	}
	for(i=1;i<=26;++i)
		lista(n,i);
	printf("%d",s);
	return 0;
}