Pagini recente » Cod sursa (job #2976291) | Cod sursa (job #2372300) | Cod sursa (job #2366269) | Cod sursa (job #1600323) | Cod sursa (job #575642)
Cod sursa(job #575642)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
#define maxN 1005
#define PB push_back
#define MOD 104659
int N, M;
vector <int> lista[30];
int d[maxN][30];
int S[maxN];
bool lit[30][30];
int main()
{
ifstream f("nrcuv.in");
ofstream g("nrcuv.out");
f >> N >> M;
for (int i = 1; i <= M; ++ i)
{
char lit1, lit2;
f >> lit1 >> lit2;
lit[lit2 - 'a'][lit1 - 'a'] = 1;
lit[lit1 - 'a'][lit2 - 'a'] = 1;
}
for (int i = 0; i < 26; ++ i)
for (int j = 0; j < 26; ++ j)
if (lit[i][j])
lista[i].PB (j);
for (int i = 0; i < 26; ++ i)
d[1][i] = 1;
S[1] = 26;
for (int i = 2; i <= N; ++ i)
{
for (int j = 0; j < 26; ++ j)
{
int sol = S[i - 1];
for (int t = 0; t < lista[j].size(); ++ t)
sol = (sol + MOD - d[i - 1][lista[j][t]]) % MOD;
d[i][j] = sol;
S[i] += sol;
S[i] %= MOD;
}
}
g << S[N];
f.close();
g.close();
return 0;
}