Pagini recente » Cod sursa (job #66902) | Cod sursa (job #2680500) | Cod sursa (job #239316) | Cod sursa (job #3225801) | Cod sursa (job #1537934)
#include <fstream>
using namespace std;
const int MOD=104659;
int x[27][27];///matrice de marcaje pentru perechi interzise
int sol[2][27];///sol[i][j]=nr de cuvinte de lungime i care se termina cu a j-ua litera din alfabet
int main()
{
int n,m,i,j,k,rez,aux;
char a,b;
ifstream in("nrcuv.in");
in>>n>>m;
for (i=1; i<=m; i++)
{
in>>a>>b;
x[a-'a'+1][b-'a'+1]=1;
x[b-'a'+1][a-'a'+1]=1;
}
in.close();
for (i=1; i<=26; i++)
sol[0][i]=1;///initializez linia 0
aux=0;
for (i=2; i<=n; i++)///iau fiecare lungime in parte
{
aux=1-aux;
for (j=1; j<=26; j++)///iau fiecare litera in parte
{
sol[aux][j]=0;
for (k=1; k<=26; k++)///iau din nou fiecare litera in parte
{
if (!x[j][k])
{
sol[aux][j]+=sol[1-aux][k];
sol[aux][j]%=MOD;
}
}
}
}
rez=0;
for (i=1; i<=26; i++)
{
rez+=sol[aux][i];
rez%=MOD;
}
ofstream out("nrcuv.out");
out<<rez;
out.close();
}