Cod sursa(job #789946)

Utilizator stef1995mmarcu stefan ovidiu stef1995m Data 19 septembrie 2012 22:17:42
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<iostream>
#include<fstream>
using namespace std;
const int val=96,modul=104659;
long long n,m,i,sol[1005][30],j,suma,k;
char a,b;
bool list[30][30];
int main()
{
	freopen("nrcuv.in","r",stdin);
	freopen("nrcuv.out","w",stdout);
	scanf("%lld %lld\n",&n,&m);
	for(i=1;i<=m;i++)
	{
		scanf("%c %c\n",&a,&b);
		list[a-val][b-val]=true;
		list[b-val][a-val]=true;
	}
	for(i=1;i<=26;i++)
		sol[1][i]=1;
	for(i=1;i<n;i++)
		for(j=1;j<=26;j++)
		{
			for(k=1;k<=26;k++)
				if(list[j][k]==false&&list[k][j]==false)
					sol[i+1][j]+=sol[i][k];
				sol[i+1][j]=sol[i+1][j]%modul;
		}
	for(i=1;i<=26;i++)
		suma+=sol[n][i];
	while(suma>modul)
		suma-=modul;
	printf("%lld\n",suma);
	return 0;
}