Cod sursa(job #365147)

Utilizator klamathixMihai Calancea klamathix Data 17 noiembrie 2009 22:52:31
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<cstdio>

#define sigma 30
#define maxn 2005
#define mod 104659

int i , j , k , A[sigma][sigma], Result[maxn][sigma] , final , n , m;
char c1 , c2;

int main ()
{
	freopen("nrcuv.in","r",stdin);
	freopen("nrcuv.out","w",stdout);
	
	scanf("%d %d\n",&n,&m);
	
	for( i = 1 ; i <= m ; ++i ) {
		scanf("%c %c\n",&c1 ,&c2);
		A[c1 - 'a' + 1][c2 -'a' + 1] = A[c2 - 'a' + 1][c1 - 'a' + 1] = 1;
	}
	
	for( i = 1 ; i <= 26 ; ++i )
		Result[1][i] = 1;
	
	for( i = 2 ; i <= n ; ++i )
		for( j = 1 ; j <= 26 ; ++j )
			for ( k = 1 ; k <= 26 ; ++k )
				if ( A[j][k] == 0 ) 
					Result[i][j] = ( Result [i][j] + Result [i - 1][k] ) % mod;   
				
	for( i = 1 ; i <= 26 ; ++i )
		final = ( final + Result[n][i] ) % mod ;
	
	printf("%d\n",final);
	
return 0;
}