Cod sursa(job #784243)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 5 septembrie 2012 12:35:18
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>
#include<fstream>

using namespace std;

#define MOD 104659
#define MAXN 1002
#define MAXL 250

int A[ MAXN ][ MAXL ];
int n, m, i, j, k, res;
char W[ 250 ][ 250 ];
char c1, c2;

int main()
{
	ifstream f("nrcuv.in");
	
	f >> n >> m;
	
	for(i = 1; i <= m; ++i)
		f >> c1 >> c2, W[ (int) c1 ][ (int) c2 ] = W[ (int) c2 ][ (int) c1 ] = 1;

	f.close();
	
	for(j = 'a'; j <= 'z'; ++j)
		A[1][j] = 1;
	
	for(i = 2; i <= n; ++i)
		for(j = 'a'; j <= 'z'; ++j)
			for(k = 'a'; k <= 'z'; ++k)
				if(!W[j][k])
					A[i][j] += A[i-1][k], A[i][j] %= MOD;
				
	for(j = 'a'; j <= 'z'; ++j)
		res += A[n][j], res %= MOD;

	FILE *g = fopen("nrcuv.out", "w");
	
	fprintf(g, "%d\n", res);
	
	fclose(g);
	
	return 0;
}