Pagini recente » Cod sursa (job #1275995) | Cod sursa (job #712265) | Cod sursa (job #171263) | Cod sursa (job #1719241) | Cod sursa (job #1883985)
#include<cstdio>
#include<algorithm>
using namespace std;
int dp[1001][30],lit[27];
struct nrcuv
{
int lit1,lit2;
};
nrcuv litera[1001];
bool sortare(nrcuv a,nrcuv b)
{
if(a.lit1==b.lit1)
return a.lit2<b.lit2;
return a.lit1<b.lit1;
}
int main()
{
freopen("nrcuv.in","r",stdin);
freopen("nrcuv.out","w",stdout);
int n,m,i,lit1,lit2,j,k,aux;
char l1,l2;
scanf("%d%d%c",&n,&m,&l1);
for(i=1;i<=m;i++)
{
scanf("%c %c\n",&l1,&l2);
if(l2<l1)
{
aux=l2;
l2=l1;
l1=aux;
}
litera[i].lit1=l1-'a'+1;
litera[i].lit2=l2-'a'+1;
if(l1==l2)
lit[litera[i].lit1]--;
lit[litera[i].lit1]++;
lit[litera[i].lit2]++;
}
sort(litera+1,litera+m+1,sortare);
for(i=1;i<m;i++)
{
if(litera[i].lit1==litera[i+1].lit1&&litera[i].lit2==litera[i+1].lit2)
{
lit[litera[i].lit1]--;
lit[litera[i].lit2]--;
}
}
for(i=1;i<=26;i++)
{
dp[1][i]=1;
}
for(i=2;i<=n;i++)
{
for(j=1;j<=26;j++)
{
for(k=1;k<=26;k++)
{
dp[i][j]+=dp[i-1][k];
}
dp[i][j]-=lit[j];
}
}
int s=0;
for(j=1;j<=26;j++)
{
s+=dp[n][j];
}
printf("%d",s);
return 0;
}