Pagini recente » Cod sursa (job #67640) | Cod sursa (job #2634354) | Cod sursa (job #1814983) | Cod sursa (job #2027643) | Cod sursa (job #277020)
Cod sursa(job #277020)
#include <cstdio>
using namespace std;
long long a[27][27],w[27][27],c[27][27],n,m;
void inmultire(long long a[27][27], long long b[27][27], long long c[27][27])
{
for (long long i=1; i<=26; i++)
for (long long j=1; j<=26; j++)
{
c[i][j]=0;
for (long long k=1; k<=26; k++)
c[i][j]+=a[i][k]*a[k][j];
}
}
void copiere(long long a[27][27],long long w[27][27])
{
for (long long i=1; i<=26; i++)
for (long long j=1; j<=26; j++)
w[i][j]=a[i][j];
}
void inm_log(long long i,long long w[27][27])
{
if (i==1)
copiere(a,w);//%MAX;
else
if (i%2==0)
{
inm_log(i/2,w);
inmultire(w,w,w);//(aux*aux)%MAX;
}
else
{
inm_log(i-1,w);
inmultire(a,w,w);
}
}
void citire()
{
char x,y;
for (long long i=1; i<=26; i++)
for (long long j=1; j<=26; j++)
a[i][j]=1;
freopen("nrcuv.in","r",stdin);
scanf("%lld %lld\n", &n, &m);
for (long long i=0; i<m; i++)
{
scanf("%c %c\n", &x, &y);
a[x-'a'+1][y-'a'+1]=a[y-'a'+1][x-'a'+1]=0;
}
}
int main()
{
freopen("nrcuv.out","w",stdout);
citire();
inm_log(n-1,w);
long long s=0;
for (long long i=1; i<=26; i++)
for (long long j=1; j<=26; j++)
s+=w[i][j];
printf("%lld\n",s);
return 0;
}