Pagini recente » Cod sursa (job #404747) | Cod sursa (job #124450) | Cod sursa (job #163684) | Rating Igor Yevchinets (igorY) | Cod sursa (job #277072)
Cod sursa(job #277072)
#include <cstdio>
#include <cstring>
using namespace std;
int a[27][27],w[27][27],n,m;
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 inmultire(int a[27][27], int b[27][27], int c[27][27])
{
int d[27][27];
for (int i=1; i<=26; i++)
for (int j=1; j<=26; j++)
{
d[i][j]=0;
for (int k=1; k<=26; k++)
d[i][j]+=a[i][k]*b[k][j];
}
copiere(d,w);
}
void inm_log(int i)
{
if (i==1)
copiere(a,w);
else
if (i%2==0)
{
inm_log(i/2);
inmultire(w,w,w);
}
else
{
inm_log(i-1);
inmultire(a,w,w);
}
}
void citire()
{
char *x,*y,s[20];
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);
fgets(s,20,stdin);
x=strtok(s," ,\n");
y=strtok(NULL,", \n");
a[x[0]-'a'+1][y[0]-'a'+1]=a[y[0]-'a'+1][x[0]-'a'+1]=0;
}
}
int main()
{
freopen("nrcuv.out","w",stdout);
citire();
if (n+1)
inm_log(n-1);
long long s=0;
for (int i=1; i<=26; i++)
for (int j=1; j<=26; j++)
s+=w[i][j];
printf("%lld\n",s);
return 0;
}