Pagini recente » Cod sursa (job #745950) | Cod sursa (job #2355777) | Cod sursa (job #2634392) | Cod sursa (job #1760148) | Cod sursa (job #575637)
Cod sursa(job #575637)
#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 -= d[i - 1][lista[j][t]];
d[i][j] = sol;
S[i] += sol;
S[i] %= MOD;
}
}
g << S[N];
f.close();
g.close();
return 0;
}