Cod sursa(job #594082)

Utilizator elfusFlorin Chirica elfus Data 6 iunie 2011 10:45:46
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
#include<string.h>
#define MOD 104659

bool f[30][30];

int last[50],next[50];

int main()
{
	int n,k,i2,i,j;
	char ch1,ch2;
	
	freopen("nrcuv.in","r",stdin);
	freopen("nrcuv.out","w",stdout);
	
	scanf("%d%d\n",&n,&k);
	while(k--)
	{
		scanf("%c %c\n",&ch1,&ch2);
		f[ch1-'a'+1][ch2-'a'+1]=1;
		f[ch2-'a'+1][ch1-'a'+1]=1;
	}
	for(i=1;i<=26;i++)
		last[i]=1;
	for(i=2;i<=n;i++)
	{
		for(j=1;j<=26;j++)
		{
			next[j]=0;
			for(i2=1;i2<=26;i2++)
				if(!f[i2][j])
					next[j]=(next[j]+last[i2])%MOD;
		}
		memcpy(last,next,sizeof(last));
	}
	int Sum=0;
	for(i=1;i<=26;i++)
		Sum=(Sum+last[i])%MOD;
	printf("%d",Sum);
	return 0;
}