Cod sursa(job #1156788)

Utilizator taigi100Cazacu Robert taigi100 Data 27 martie 2014 23:24:04
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
/*
	Keep It Simple!
*/

#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif

#include<cstdio>

#define MaxN 1005
#define MOD 104659

int N, M, Dp[MaxN][27], Conf[27][27];

int main()
{
	freopen("nrcuv.in", "r", stdin);
	freopen("nrcuv.out", "w", stdout);

	scanf("%d%d", &N, &M);
	char x, y;
	scanf("%c", &x);
	for (int i = 1; i <= M; i++)
	{
		scanf("%c%c%c", &x, &y, &y);
		Conf[x - 'a'][y - 'a'] = 1;
		Conf[y - 'a'][x - 'a'] = 1;
		scanf("%c", &x);
	}

	for (int i = 0; i < 26; i++)
		Dp[1][i] = 1;
	for (int i = 2; i <= N;	i++)
	for (int j = 0; j < 26; j++)
	{
		for (int k = 0; k < 26; k++)
			if (!Conf[k][j] && !Conf[j][k])
				Dp[i][j] = (Dp[i][j] + Dp[i - 1][k]) % MOD;
	}

	int sol = 0;
	for (int i = 0; i < 26; i++)
		sol = (sol + Dp[N][i]) % MOD;

	printf("%d", sol);
}