Pagini recente » Cod sursa (job #629661) | Cod sursa (job #2067616) | Cod sursa (job #187169) | Cod sursa (job #1611160) | Cod sursa (job #3333096)
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
const int NMAX = 1e3 + 2;
int n, m, dp[27][NMAX];
unordered_set<int> dep[27];
signed main()
{
fin >> n >> m;
while (m--)
{
char l1, l2;
fin >> l1 >> l2;
// cout << (int)l1 - 'a' + 1 << " " << l2 << "\n";
dep[(int)l1 - 'a' + 1].insert((int)l2 - 'a' + 1);
dep[(int)l2 - 'a' + 1].insert((int)l1 - 'a' + 1);
}
// return 0;
for (int i = 1; i <= 26; i++)
{
dp[i][1] = 1;
}
int prevsum = 26, cursum = 0;
for (int i = 2; i <= n; i++)
{
for (int k = 1; k <= 26; k++)
{
dp[k][i] = prevsum;
for(auto cif: dep[k])
{
dp[k][i] -= dp[cif][i - 1];
}
// if(i == 2)cout << dp[k][i] << "\n";
cursum += dp[k][i];
}
prevsum = cursum;
cursum = 0;
}
int ans = 0;
for(int i = 1; i <= 26; i++)
{
ans = (ans + dp[i][n]) % 104659;
}
fout << ans;
return 0;
}