Cod sursa(job #794982)

Utilizator avramavram andrei marius avram Data 7 octombrie 2012 14:08:07
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#define MOD 104659

using namespace std;

int D[26][1010];

int M[26][26], i, j, k, n, m, sol;

char x, y;

using namespace std;

int main() {
	ifstream f("nrcuv.in");
	ofstream g("nrcuv.out");
	f>>n>>m;
	for (i=1;i<=m;i++) {
		f>>x>>y;
		M[x-'a'][y-'a'] = M[y-'a'][x-'a'] = 1;
	}
	
	for (i=0;i<26;i++)
		D[i][1] = 1;
	
	for (j=2;j<=n;j++) {
		for (i=0;i<=25;i++) {
			D[i][j] = 0;
			for (k=0;k<=25;k++)
				if (M[i][k] == 0) {
					D[i][j] += D[k][j-1];
					if (D[i][j] >= MOD)
						D[i][j] -= MOD;
				}
		}
	}
	
	sol = 0;
	for (i=0;i<=25;i++) {
		sol+=D[i][n];
		if (sol >= MOD)
			sol -= MOD;
	}
	g<<sol<<"\n";
	return 0;
}