Pagini recente » Cod sursa (job #1040307) | Cod sursa (job #1287417) | Cod sursa (job #2583576) | Cod sursa (job #1258118) | Cod sursa (job #1644412)
#include <iostream>
#include <fstream>
using namespace std;
int N, M;
int S;
char cuv2[1000];
char lit[2000][2];
ifstream i("nrcuv.in");
ofstream o("nrcuv.out");
void backtrack(int x, char cuv[])
{
if(x == N)
{
S++;
return;
}
else
{
for(char a = 'a'; a <= 'z'; a++)
{
bool ok = true;
if(x != 0)
{
for(int b = 0; b < M; b++)
{
if(cuv[x - 1] == lit[b][0])
{
if(a == lit[b][1])
{
ok = false;
}
}
if(cuv[x - 1] == lit[b][1])
{
if(a == lit[b][0])
{
ok = false;
}
}
}
}
if(ok)
{
cuv[x] = a;
backtrack(x + 1, cuv);
}
}
}
}
int main()
{
char k[1000];
i >> N >> M;
for(int a = 0; a < M; a++)
{
i >> lit[a][0] >> lit[a][1];
}
backtrack(0, k);
o << S;
return 0;
}