Pagini recente » Cod sursa (job #2664488) | Cod sursa (job #174520) | Cod sursa (job #481685) | Istoria paginii runda/usu7 | Cod sursa (job #790169)
Cod sursa(job #790169)
#include<iostream>
#include<fstream>
const int modul=104659;
using namespace std;
int n,m,i,j,trans[30][30],sol[30][30],z[30][30],k,s;
char a,b;
void prod(int x[30][30],int 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(int 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("%d %d\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("%d\n",s);
return 0;
}