Cod sursa(job #3136815)

Utilizator ridicheTudor Diaconu ridiche Data 8 iunie 2023 18:11:31
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>

using namespace std;

ifstream in;
ofstream out;

int np[1005][26];
bool ok[26][26];

int main()
{
	in.open("nrcuv.in");
	out.open("nrcuv.out");
	int n, m;
	in >> n >> m;
	for (int i = 0; i < 26; i++)
	{
		for (int j = 0; j < 26; j++)
		{
			ok[i][j] = 1;
		}
	}
	for (int i = 0; i < m; i++)
	{
		char a, b;
		in >> a >> b;
		a -= 'a';
		b -= 'a';
		ok[a][b] = 0;
		ok[b][a] = 0;
	}
	for (int i = 0; i < n; i++)
	{
		if (!i)
		{
			for (int j = 0; j < 26; j++)
			{
				np[i][j] = 1;
			}
		}
		else
		{
			for (int j = 0; j < 26; j++)
			{
				for (int k = 0; k < 26; k++)
				{
					if (ok[j][k])
					{
						np[i][j] += np[i - 1][k];
					}
					np[i][j] %= 104659;
				}
			}
		}
	}
	int r = 0;
	for (int i = 0; i < 26; i++)
	{
		r += np[n - 1][i];
		r %= 104659;
	}
	out << r;
}