Pagini recente » Cod sursa (job #2646230) | Cod sursa (job #1969652) | Cod sursa (job #3249190) | Cod sursa (job #2269109) | Cod sursa (job #2271902)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
const int NMAX = 26, MOD = 104659;
int DP[2][NMAX + 5], N, M, S = 26;
bool A[NMAX + 5][NMAX + 5];
int main()
{
char x, y;
fin >> N >> M;
memset(A, 1, sizeof(A));
while(M--) {
fin >> x >> y;
x -= 'a', y -= 'a';
A[x][y] = A[y][x] = false;
}
for(int i = 0; i <= NMAX; i++)
DP[0][i] = 1;
for(int ct = 2, l = 1; ct <= N; ct++, l = 1 - l) {
S = 0;
for(int i = 0; i < NMAX; i++) {
for(int j = 0; j < NMAX; j++)
DP[l][i] += A[i][j] * DP[1 - l][j];
DP[l][i] %= MOD;
S += DP[l][i];
}
}
fout << S % MOD << '\n';
fin.close();
fout.close();
return 0;
}