Pagini recente » Cod sursa (job #1547934) | Cod sursa (job #2907399) | Cod sursa (job #870104) | Cod sursa (job #2754454) | Cod sursa (job #790173)
Cod sursa(job #790173)
#include<iostream>
#include<fstream>
const int modul=104659;
using namespace std;
long long n,m,i,j,trans[30][30],sol[30][30],z[30][30],k,s;
char a,b;
void prod(long long x[30][30],long long y[30][30])
{
for(i=1;i<=26;i++)
for(j=1;j<=26;j++)
z[i][j]=0;
for(i=1;i<=26;i++)
for(j=1;j<=26;j++)
{
for(k=1;k<=26;k++)
{
z[i][j]+=x[i][k]*y[k][j];
z[i][j]=z[i][j]%modul;
}
}
for(i=1;i<=26;i++)
for(j=1;j<=26;j++)
x[i][j]=z[i][j];
}
void mult(long long power)
{
while(power)
{
if(power&1==1)
prod(sol,trans);
prod(trans,trans);
power>>=1;
}
}
int main()
{
freopen("nrcuv.in","r",stdin);
freopen("nrcuv.out","w",stdout);
scanf("%lld %lld\n",&n,&m);
for(i=1;i<=26;i++)
for(j=1;j<=26;j++)
{
trans[i][j]=1;
sol[i][j]=1;
}
for(i=1;i<=m;i++)
{
scanf("%c %c\n",&a,&b);
trans[a-'a'+1][b-'a'+1]=trans[b-'a'+1][a-'a'+1]=0;
}
mult(n-1);
for(i=1;i<=26;i++)
s+=sol[1][i];
s=s%modul;
printf("%lld\n",s);
return 0;
}