Pagini recente » Cod sursa (job #290916) | Cod sursa (job #267818) | Cod sursa (job #8923) | Cod sursa (job #2347221) | Cod sursa (job #277018)
Cod sursa(job #277018)
#include <cstdio>
using namespace std;
int a[27][27],w[27][27],c[27][27],n,m;
void inmultire(int a[27][27], int b[27][27], int c[27][27])
{
for (int i=1; i<=26; i++)
for (int j=1; j<=26; j++)
{
c[i][j]=0;
for (int k=1; k<=26; k++)
c[i][j]+=a[i][k]*a[k][j];
}
}
void copiere(int a[27][27],int w[27][27])
{
for (int i=1; i<=26; i++)
for (int j=1; j<=26; j++)
w[i][j]=a[i][j];
}
void inm_log(long long i,int 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 (int i=1; i<=26; i++)
for (int j=1; j<=26; j++)
a[i][j]=1;
freopen("nrcuv.in","r",stdin);
scanf("%d %d\n", &n, &m);
for (int 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);
int s=0;
for (int i=1; i<=26; i++)
for (int j=1; j<=26; j++)
s+=w[i][j];
printf("%d\n",s);
return 0;
}