Pagini recente » Cod sursa (job #1559588) | Cod sursa (job #2969783) | Cod sursa (job #3148574) | Cod sursa (job #474838) | Cod sursa (job #3203050)
#include<fstream>
using namespace std;
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
const int NMax = 1000;
const int MOD = 104659;
int N, M, DP[NMax+5][30];
struct vecini{
bool vec[27];
}v[27];
void Read() {
in >> N >> M;
for (int i = 0; i < M; i++) {
char x, y;
in >> x >> y; x -= 'a'-1,y -= 'a'-1;
v[x].vec[y] = v[y].vec[x] = 1;
}
}
void Solve() {
for (int i = 1; i <= 27; i++)
DP[1][i] = 1;
for (int i = 2; i <= N; i++) {
for (int j = 1; j <= 26; j++)
for (int k = 1; k <= 26; k++) {
if (!v[j].vec[k]) DP[i][j] += DP[i-1][k];
if(DP[i][j] >= MOD) DP[i][j] %= MOD;
}
}
long long Sol=0;
for (int i = 1; i <= 26; i++)
Sol +=DP[N][i];
Sol %= MOD;
out << Sol;
}
int main() {
Read();
Solve();
}