Pagini recente » Cod sursa (job #2861763) | Cod sursa (job #652649) | Cod sursa (job #54302) | Cod sursa (job #1943265) | Cod sursa (job #1883993)
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
struct ura{
int x1,x2;
};
ura vreg[1001];
char c,c1,c2,sreg[4002];
int dp[1001][30],nrreg[1001];
bool sortare (ura a, ura b){
if (a.x1==b.x1){
return a.x2<b.x2;}
return a.x1<b.x1;
}
int main()
{
freopen ("nrcuv.in","r",stdin);
freopen ("nrcuv.out","w",stdout);
int aux,aux2;
int n,m,i,j,k,cc2;
scanf ("%d%d%c",&n,&m,&c);
for (i=1;i<=m;i++){
scanf ("%c %c\n",&c1,&c2);
vreg[i].x1=c1-'a'+1;
vreg[i].x2=c2-'a'+1;
if (vreg[i].x1>vreg[i].x2){
aux=vreg[i].x2;
aux2=vreg[i].x1;
vreg[i].x1=aux;
vreg[i].x2=aux2;
}
if (vreg[i].x1==vreg[i].x2)
nrreg[vreg[i].x1]--;
nrreg[vreg[i].x1]++;
nrreg[vreg[i].x2]++;}
sort (vreg+1,vreg+m+1,sortare);
for (i=2;i<=m;i++){
if (vreg[i].x1==vreg[i-1].x1 && vreg[i].x2==vreg[i-1].x2){
nrreg[vreg[i].x2]--;
nrreg[vreg[i].x1]--;
}
}
for (i=1;i<=26;i++){
dp[1][i]=1;}
int sfinal=0;
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]-=nrreg[j];
}
}
for (i=1;i<=26;i++)
{
sfinal+=dp[n][i];
}
printf ("%d",sfinal);
return 0;
}