Pagini recente » Cod sursa (job #1169325) | Cod sursa (job #912173) | Cod sursa (job #3268379) | Cod sursa (job #891659) | Cod sursa (job #3254241)
#include <fstream>
#include <vector>
#include <bitset>
using namespace std;
const int MOD = 104659;
const int NL = 26;
int main()
{
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
int n, m;
in >> n >> m;
vector <bitset <NL>> inc(NL);
for (int i = 0; i < m; i++)
{
char x, y;
in >> x >> y;
int nr_x = x - 'a';
int nr_y = y - 'a';
inc[nr_x][nr_y] = inc[nr_y][nr_x] = 1;
}
vector < vector <int>> nrc(n + 1);
vector <int> aux(NL, 1);///vector STL alocat dinamic, cu toate elementele 1
nrc[1] = aux;
for (int i = 2; i <= n; i++)
{
for (int j = 0; j < NL; j++)
{
aux[j] = 0;
for (int k = 0; k < NL; k++)
{
///incercam sa adaugam a j-a litera la un cuvant de lung. i-1, terminat cu a k-a litera
if (!inc[k][j])
{
aux[j] = (aux[j] + nrc[i-1][k]) % MOD;
}
}
}
nrc[i] = aux;
}
int rez = 0;
for (int j = 0; j < NL; j++)
{
rez = (rez + nrc[n][j]) % MOD;
}
out << rez;
in.close();
out.close();
return 0;
}