Cod sursa(job #710317)

Utilizator suzanicaSuzanica Mihu suzanica Data 9 martie 2012 14:17:41
Problema Lista lui Andrei Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<cstdio>
#include<cmath>
using namespace std;

int v[1000],nrsol,n,M,nrrest,m[27][27];
void bak(int l)
{
	if(l==1)
		for(int k=1;k<=26;k++)
		{
			v[l]=k;
			bak(l+1);
		}
	else
		if(l<=n)
			for(int k=1;k<=26;k++)
			{
				v[l]=k;
				if(m[v[l-1]][v[l]]==0)
					bak(l+1);
			}
		else
		{
			nrsol++;
			if(nrsol==104659)
				nrsol=0;
		}
}
int main()
{
	freopen("nrcuv.in","r",stdin);
	freopen("nrcuv.out","w",stdout);
	//printf("%d",'z'-'a'+1);
	scanf("%d %d",&n,&M);
	char a,b,aux;
	int x,y;
	for(int k=1;k<=M;k++)
	{
		scanf("%c",&aux);
		scanf("%c %c",&a,&b);
		x=a-'a'+1;
		y=b-'a'+1;
		if(m[x][y]==0)
		{
			m[x][y]=1;
			m[y][x]=1;
			if(x==y)
				nrrest++;
			else
				nrrest=nrrest+2;
		}
	}
	if(M!=0)
	{
		bak(1);
		printf("%d\n",nrsol);
	}
	else
	{
		double x;
		double y=n,f=26;
		x=pow(f,y);
		printf("%.0f\n",x);
	}
	return 0;
}