Pagini recente » Cod sursa (job #574271) | Borderou de evaluare (job #2506717) | Cod sursa (job #3330801)
#include <bits/stdc++.h>
using namespace std;
unsigned long long int dp[1005][255], sp[1005], mod = 104659;
vector<int> v[205];
map<pair<int,int>, int> f;
/**
2 7
a a
a b
b c
c d
c f
b a
c f
*/
int main() {
ifstream cin("nrcuv.in");
ofstream cout("nrcuv.out");
int n, m;
cin >> n >> m;
char c1, c2;
for (int i = 0; i < m; i++) {
cin >> c1 >> c2;
int n1 = int(c1);
int n2 = int(c2);
if (f[{n1, n2}] == 0) {
f[{n1, n2}] = 1;
f[{n2, n1}] = 1;
if (n1 != n2) {
v[n1].push_back(n2);
v[n2].push_back(n1);
} else {
v[n1].push_back(n1);
}
}
}
for (int i = int('a'); i <= int('z'); ++i) {
dp[1][i] = 1;
}
sp[1] = 26;
for (int i = 2; i <= n; ++i) {
for (int j = int('a'); j <= int('z'); ++j) {
dp[i][j] = sp[i - 1];
for (auto a : v[j]) {
dp[i][j] = (dp[i][j] - dp[i - 1][a] + mod) % mod;
}
sp[i] = (sp[i] + dp[i][j]) % mod;
}
}
cout << sp[n];
return 0;
}