Pagini recente » Cod sursa (job #2631045) | Cod sursa (job #2383740) | Cod sursa (job #795093) | Cod sursa (job #198444) | Cod sursa (job #3251843)
#include <fstream>
#include <vector>
#include <unordered_set>
using namespace std;
ifstream cin("nrcuv.in");
ofstream cout("nrcuv.out");
const int MOD=104659;
int n,m;
vector<unordered_set<int>> f;
char l1,l2;
int dp[1002][26];
int main()
{
cin>>n>>m;
f.resize(26);
for(int i=0;i<m;i++)
{
cin>>l1>>l2;
f[int(l1-'a')].insert(int(l2-'a'));
f[int(l2-'a')].insert(int(l1-'a'));
}
for(int i=0;i<26;i++)
dp[1][i]=1;
int sum=26;
for(int i=2;i<=n;i++)
{
int aux=sum;
sum=0;
for(int lit=0;lit<26;lit++)
{
int cat=0;
for(auto it:f[lit])
{
cat=(cat+dp[i-1][it])%MOD;
}
dp[i][lit]=(aux-cat+MOD)%MOD;
sum=(sum+dp[i][lit])%MOD;
}
}
cout<<sum%MOD;
return 0;
}