Cod sursa(job #743436)

Utilizator NicuCJNicu B. NicuCJ Data 4 mai 2012 14:37:32
Problema Lista lui Andrei Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>
using namespace std;

char x[2500], l1, l2;
bool luat[256][256];
int n, m, k, contor;
bool verifica()
{
	int i;
	for(i=1; i<n; i++)
	{
		if(luat[(int)x[i]][(int)x[i+1]] || luat[(int)x[i+1]][(int)x[i]])
			return false;
	}
	return true;
}
void back(int k)
{
	int i;
	for(i='a'; i<='z'; i++)
	{
		x[k]=i;
		if(k==n)
		{
			if(verifica())
			{
				contor++;
				contor%=104659;
			}
		}
		else back(k+1);
	}
}
int main()
{
	freopen("nrcuv.in","r",stdin);
	freopen("nrcuv.out","w",stdout);
	scanf("%d", &n);
	scanf("%d", &m);
	int i;
	char a;
	scanf("%c", &a);
	for(i=1; i<=m; i++)
	{
		scanf("%c %c\n", &l1, &l2);
		luat[(int)l1][(int)l2]=true;
		luat[(int)l2][(int)l1]=true;
	}
	back(1);
	printf("%d", contor);
}