Cod sursa(job #3242222)

Utilizator Commander_XDunel Stefan-Octavian Commander_X Data 10 septembrie 2024 08:44:43
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
//https://www.infoarena.ro/problema/nrcuv
#include <fstream>
#include <vector>

std::ifstream fin("nrcuv.in");
std::ofstream fout("nrcuv.out");

using namespace std;

#define MOD 104659

vector<vector<bool>> vecine(26, vector<bool>(26, false));
vector<vector<int>> dp;

int main()
{
	int n, m, sum = 0;
	char x, y;
	fin >> n >> m;
	dp.resize(26, vector<int>(n, 0));

	for (int i = 0; i < m; ++i)
	{
		fin >> x >> y;
		vecine[int(x - 'a')][int(y - 'a')] = true;
		vecine[int(y - 'a')][int(x - 'a')] = true;
	}

	for (int i = 0; i < 26; ++i)
		dp[i][0] = 1;

	for (int j = 1; j < n; ++j)
		for (int i = 0; i < 26; ++i)
			for (int c = 0; c < 26; ++c)
				if (!vecine[i][c])
					dp[i][j] = (dp[i][j] + dp[c][j - 1]) % MOD;

	for (int i = 0; i < 26; ++i)
		sum = (sum + dp[i][n - 1]) % MOD;
	fout << sum;
}