Pagini recente » Cod sursa (job #1965842) | Cod sursa (job #1192225) | Cod sursa (job #1769047) | Cod sursa (job #1656085) | Cod sursa (job #343799)
Cod sursa(job #343799)
#include<stdio.h>
#include<vector>
#define M 104659
using namespace std;
vector <int> v[30];
char c1[5],c2[5];
int n,m,i,j,k,sol,ok[30][30],s1[30],s2[30],*ca,*cn,*cv;
void read(),solve();
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("nrcuv.in","r",stdin);
freopen("nrcuv.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=0;i<26;i++)
for(j=0;j<26;j++)
ok[i][j]=1;
for(;m;m--)
{
scanf("%s%s",c1,c2);
i=c1[0]-'a';j=c2[0]-'a';
ok[i][j]=ok[j][i]=0;
}
for(i=0;i<26;i++)
for(j=0;j<26;j++)
if(ok[i][j])v[i].push_back(j);
}
void solve()
{
vector<int>::iterator it;
cv=s1;cn=s2;
for(i=0;i<26;i++)cv[i]=1;
for(k=1;k<n;k++)
{
for(i=0;i<26;i++)
{
cn[i]=0;
for(it=v[i].begin();it!=v[i].end();it++)
cn[i]+=cv[*it];
cn[i]%=M;
}
ca=cv;cv=cn;cn=ca;
}
for(i=0;i<26;i++)sol+=cv[i];
sol%=M;
printf("%d\n",sol);
}