Cod sursa(job #479972)

Utilizator dornescuvladVlad Eugen Dornescu dornescuvlad Data 25 august 2010 21:13:16
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <fstream>
#define  nmax 1005
#define  mod  104659

using namespace std;

const char iname[] = "nrcuv.in";
const char oname[] = "nrcuv.out";

ifstream fin(iname);
ofstream fout(oname);

bool ap[28][28];
int i, j, dp[nmax][28], N, M, k, sum;
char a, b;

int main()
{
	fin >> N >> M;
	for(i = 1; i <= M; i ++)
	{
		fin >> a >> b;
		ap[a - 'a' + 1][b - 'a' + 1] = true;
		ap[b - 'a' + 1][a - 'a' + 1] = true;
	}
	
	for(i = 1; i <= 26; i ++)
		dp[1][i] = 1;
	for(i = 2; i <= N; i ++)
		for(j = 1; j <= 26; j ++)
			for(k = 1; k <= 26; k ++)
				if(ap[j][k] == false)
					dp[i][k] = (dp[i][k] + dp[i - 1][j]) % mod;
	for(i = 1; i <= 26; i ++)
		sum = (sum + dp[N][i]) % mod;
	fout << sum;
	return 0;
}