Cod sursa(job #605557)

Utilizator sory1806Sandu Sorina-Gabriela sory1806 Data 31 iulie 2011 15:48:19
Problema Lista lui Andrei Scor 60
Compilator c Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>

#define nrlit 26
#define nmax 101
#define mod 104659

int main () {

	freopen ("nrcuv.in", "r", stdin);
	freopen ("nrcuv.out", "w", stdout);
	
	int mat[nmax][nrlit], lst[nrlit][nrlit], i, j, k, n, m, s;
	char l1, l2;
	
	scanf ("%d %d\n", &n, &m);

	for (i = 0 ; i < nrlit; i++)
		for (j = 0; j < nrlit; j++)
			lst[i][j] = 0;

	for (i = 0; i < m; i++) {
		scanf ("%c %c\n", &l1, &l2);
		l1 -= 'a'; l2 -= 'a';
		lst[l1][l2] = 1; lst[l2][l1] = 1;
	}
	
	i = 1;
	for (j = 0; j < nrlit; j++)
		mat[i][j] = 1;

	for ( i = 2; i <= n; i++) {
	
		for (j = 0; j < nrlit; j++) {
			s = 0;
			for (k = 0; k < nrlit; k++)
				if (!lst[j][k])
					s = (s + mat[i-1][k]) % mod;

			mat[i][j] = s;
		}
	}
	
	s = 0;
	for ( j = 0; j < nrlit; j++)
		s = (s + mat[n][j]) % mod;

	printf ("%d\n", s);
		
	return 0;
}