Pagini recente » Cod sursa (job #699975) | Cod sursa (job #3248926) | Cod sursa (job #2447270) | Cod sursa (job #2195993) | Cod sursa (job #3242222)
//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;
}