Pagini recente » Cod sursa (job #2148598) | Cod sursa (job #1856089) | Cod sursa (job #730734) | Cod sursa (job #1452026) | Cod sursa (job #3353592)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin ("nrcuv.in");
ofstream cout ("nrcuv.out");
const int MOD = 104659;
int n, m, dp[1005][30];
vector <int> v[30];
int main()
{
// 97 122
// dp[i][j] = cate cuvinte de i litere cu ultima litera j
cin >> n >> m;
for (int i = 1; i <= m; i++)
{
char a, b;
cin >> a >> b;
v[int(a) - 97].push_back(int(b) - 97);
v[int(b) - 97].push_back(int(a) - 97);
}
for (int i = 0; i <= 25; i++)
dp[1][i] = 1;
for (int i = 2; i <= n; i++)
{
for (int j = 0; j <= 25; j++)
{
for (int k = 0; k <= 25; k++)
{
bool flag = true;
for (int l = 0; l < v[j].size(); l++)
{
if (v[j][l] == k)
{
flag = false;
break;
}
}
if (flag == false)
continue;
dp[i][k] += dp[i - 1][j];
dp[i][k] %= MOD;
}
}
}
int ans = 0;
for (int i = 0; i <= 25; i++)
{
ans += dp[n][i];
ans %= MOD;
}
cout << ans << "\n";
return 0;
}