Cod sursa(job #194461)

Utilizator swift90Ionut Bogdanescu swift90 Data 10 iunie 2008 21:03:14
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<stdio.h>
#define rest 104659
int ap[30][30],nr[1010][30];
char s[10];
int main(){
	freopen("nrcuv.in","r",stdin);
	freopen("nrcuv.out","w",stdout);
	int n,m,i,j,k;
	scanf("%d%d",&n,&m);
	fgets(s,10,stdin);
	for(i=0;i<m;++i){
		fgets(s,10,stdin);
		ap[s[0]-'a'][s[2]-'a']=1;
		ap[s[2]-'a'][s[0]-'a']=1;
	}
	
	for(i=0;i<26;++i)
		nr[0][i]=1;
	for(i=1;i<n;++i){
		for(j=0;j<26;++j){
			for(k=0;k<26;++k){
				if(!ap[j][k])
					nr[i][j]+=nr[i-1][k];
			}
			nr[i][j]=nr[i][j]%rest;
		}
	}
	j=0;
	for(i=0;i<26;++i)
		j+=nr[n-1][i];
	
	printf("%d\n",j%rest);
	fclose(stdin);
	fclose(stdout);
	return 0;
}