Pagini recente » Cod sursa (job #906807) | Cod sursa (job #1895869) | Cod sursa (job #1008413) | Cod sursa (job #1599187) | Cod sursa (job #1743065)
#include <iostream>
#include <fstream>
#include <bitset>
using namespace std;
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
const int mod = 104659;
const int maxn = 1005;
const int sigma = 26;
bitset <30> M[30];
int dp[maxn][30];
int main()
{
int n, m;
in >> n >> m;
for(int i = 1; i <= m; i++)
{
char x1, y1;
in >> x1 >> y1;
int x = x1 - 'a' + 1;
int y = y1 - 'a' + 1;
M[x][y] = 1;
M[y][x] = 1;
}
for(int k = 1; k <= sigma; k++)
dp[1][k] = 1;
for(int i = 2; i <= n; i++)
{
for(int j = 1; j <= sigma; j++)
{
int s = 0;
for(int k = 1; k <= sigma; k++)
{
if(M[j][k] == 0)
{
s += dp[i-1][k];
if(s >= mod)
s -= mod;
}
}
dp[i][j] = s;
}
}
int s = 0;
for(int i = 1; i <= sigma; i++)
{
s += dp[n][i];
if(s > mod)
s = s - mod;
}
out << s << "\n";
return 0;
}