Pagini recente » Cod sursa (job #2726123) | Cod sursa (job #151216) | Cod sursa (job #1329362) | Cod sursa (job #1545983) | Cod sursa (job #2087898)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("nrcuv.in");
ofstream cout("nrcuv.out");
const int lmax=26,mod=104659,nmax=1000;
bool pot[lmax+5][lmax];
vector<int>v[lmax+5];
int l[lmax+5];
int dp[nmax+5][lmax+5];
int n,k;
char a,b;
int main()
{
cin>>n>>k;
for(int i=0;i<lmax;i++)
for(int j=0;j<lmax;j++)
pot[i][j]=1;
for(int i=1;i<=k;i++)
{
cin>>a>>b;
pot[a-'a'][b-'a']=pot[b-'a'][a-'a']=0;
}
for(int i=0;i<lmax;i++)
for(int j=0;j<lmax;j++)
if(pot[i][j]==1)
v[i].push_back(j);
for(int i=0;i<lmax;i++)
l[i]=v[i].size();
for(int i=0;i<lmax;i++)
dp[1][i]=1;
for(int i=2;i<=n;i++)
{
for(int j=0;j<lmax;j++)
for(int k=0;k<l[j];k++)
{
///j, v[j][k]
dp[i][v[j][k]]+=dp[i-1][j];
if(dp[i][v[j][k]]>mod)
dp[i][v[j][k]]-=mod;
}
}
int sol=0;
for(int i=0;i<lmax;i++)
sol=(sol+dp[n][i])%mod;
cout<<sol;
return 0;
}
/**
**/