Cod sursa(job #2927734)

Utilizator lucaxsofLuca Sofronie lucaxsof Data 21 octombrie 2022 11:17:31
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <math.h>
#include <vector>
#include <iomanip>
#include <fstream>
#include <algorithm>
#include <cstring>
#include <stack>
#include <queue>
#include <bitset>
#include <string>
//#include <bits/stdc++.h>
using namespace std;

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

#define fast ios::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL)


#define mod %104659

int dp[1003][30];

bitset <30> a[30];

int n, m;

void read()
{
	char x, y;
	fin >> n >> m;
	for (int i = 1; i <= m; ++i)
	{
		fin >> x >> y;
		a[x-'a'+1][y-'a'+1] = a[y-'a'+1][x-'a'+1] =1;
	}
}


void fn()
{
	for (int i = 1; i <= 26; ++i)
		dp[1][i] = 1;
	for (int lg = 2; lg <= n; ++lg)										//pt fiecare lungime de cuvant
		for (int letter = 1; letter <= 26; ++letter)					//sa vad toate posibilitatile de cuv care se termina cu o anumita litera
			for (int letter2 = 1; letter2 <= 26; ++letter2)				//aici vad cu ce litere e compatibila
				if (!a[letter][letter2])
					dp[lg][letter]+=(dp[lg-1][letter2] mod);
	long long answer = 0;
	for (int column = 1; column <= 26; ++column)
		answer += dp[n][column];
	fout << answer mod;
}

int main()
{
	fast;
	read();
	fn();
}