Pagini recente » Cod sursa (job #3223583) | Cod sursa (job #3286019) | Cod sursa (job #1691667) | Cod sursa (job #2872129) | Cod sursa (job #955192)
Cod sursa(job #955192)
#include <fstream>
#include <string>
#define MAXN 1002
#define MOD 104659
using namespace std;
bool graph[30][30];
int sol[30][MAXN];
int main(void)
{
int n, m;
ifstream f("nrcuv.in");
ofstream g("nrcuv.out");
f >> n >> m;
for (int i = 'a'; i <= 'z'; i++)
for (int j = 'a'; j <= 'z'; j++)
graph[i - 'a'][j - 'a'] = true;
while (m--) {
string s1, s2;
f >> s1 >> s2;
graph[s1[0] - 'a'][s2[0] - 'a'] = false;
graph[s2[0] - 'a'][s1[0] - 'a'] = false;
}
for (int i = 'a'; i <= 'z'; i++) {
sol[i - 'a'][1] = 1;
}
for (int i = 2; i <= n; i++) {
for (int c1 = 'a'; c1 <= 'z'; c1++) {
for (int c2 = 'a'; c2 <= 'z'; c2++) {
sol[c2 - 'a'][i] += graph[c1 - 'a'][c2 - 'a'] ? sol[c1 - 'a'][i - 1] : 0;
sol[c2 - 'a'][i] %= MOD;
}
}
}
int res = 0;
for (int i = 'a'; i <= 'z'; i++) {
res += sol[i - 'a'][n];
res %= MOD;
}
g << res << "\n";
f.close();
g.close();
return 0;
}