Cod sursa(job #341313)

Utilizator cotofanaCotofana Cristian cotofana Data 18 august 2009 02:08:19
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <cstdio>
#define MAXN 10001
#define MAXS 27
#define MOD 104659
#define Z 'z'-'a'

using namespace std;

int N, M, m[MAXS][MAXS], a[MAXN][MAXS], sol;

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