Cod sursa(job #363540)

Utilizator iulia609fara nume iulia609 Data 13 noiembrie 2009 18:00:42
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<stdio.h>
using namespace std;

int mat[26][26], N, M, m[1001][26];
const int modulo = 104659;

int main()
{ int i, j,k;
  char a,b;
	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", &a, &b);
		mat[a - 'a'][b - 'a'] = 1;
		mat[b - 'a'][a - 'a'] = 1;
	}
	
	for(i = 0; i <= 25; i++)
	{
		m[1][i] = 1;
	}
	
	for(i = 2; i <= N; i++)
		for(j = 0; j <= 25; j++)
		{
			for(k = 0; k <= 25; k++)
				if(!mat[k][j]) 
				{
					// m[i][j] = (m[i][j] + m[i-1][k]) % modulo;
					m[i][j] += m[i-1][k];
					if (m[i][j] >= modulo)
						m[i][j] -= modulo;
				}
		}
	int sol = 0;
	for(i = 0; i <= 25; i++)
	{
		sol += m[N][i];
		if(sol >= modulo)
			sol -= modulo;
	}
		
	printf("%d\n", sol);
	
	return 0;
}