Pagini recente » Cod sursa (job #1977900) | Cod sursa (job #1655489) | Cod sursa (job #1589420) | Cod sursa (job #2330413) | Cod sursa (job #1921950)
#include <fstream>
#include <string>
using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
const int MOD = 104659;
const int NMAX = 1000;
const int ALFABET = 26;
int lista[ALFABET + 1][ALFABET + 1];
long long d[NMAX + 1][ALFABET + 1];
int main()
{
int n, m;
fin >> n >> m;
char a, b;
string s;
getline(fin, s);
for(int i = 1; i <= m; i++) {
getline(fin, s);
int nr = 1;
for(int j = 0; j < int(s.size()); ++j) {
if(s[j] != ' ' && s[j] != '\n') {
if(nr == 1) {
a = s[j];
nr++;
} else if(nr == 2) {
b = s[j];
nr--;
}
}
}
lista[a - 96][b - 96] = 1;
lista[b - 96][a - 96] = 1;
}
for(int i = 1; i <= 26; i++) {
d[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(lista[j][k] == 0) {
d[i][j] = (d[i][j] + d[i - 1][k]) % MOD;
}
}
}
}
int sum = 0;
for(int i = 1; i <= 26; i++) {
sum = (sum + d[n][i]) % MOD;
}
fout << sum << "\n";
return 0;
}