Cod sursa(job #2118433)

Utilizator flibiaVisanu Cristian flibia Data 30 ianuarie 2018 17:25:18
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("nrcuv.in");
ofstream out("nrcuv.out");

int n, m, dp[1010][30], rs;
char c, g;
bool ok[30][30];

int main(){
	in >> n >> m;
	for(int i = 1; i <= m; i++){
		in >> c >> g;
		ok[c - 'a'][g - 'a'] = ok[g - 'a'][c - 'a'] = 1;
	}
	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(!ok[j][k])
					dp[i][j] = (dp[i][j] + dp[i - 1][k]) % 104659;
	for(int j = 0; j < 26; j++)
		rs = (rs + dp[n][j]) % 104659; 
	out << rs;
	return 0;
}