Cod sursa(job #486420)

Utilizator ChallengeMurtaza Alexandru Challenge Data 21 septembrie 2010 17:23:13
Problema Lista lui Andrei Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>

using namespace std;

const char InFile[]="nrcuv.in";
const char OutFile[]="nrcuv.out";
const int MaxN=1010;
const int MOD=104659;

ifstream fin(InFile);
ofstream fout(OutFile);

int sol,n,m,a[26][26],best[26][MaxN];
char ch1,ch2;

int main()
{
	for(register int i=0;i<26;++i)
	{
		best[i][1]=1;
		for(register int j=0;j<26;++j)
		{
			a[i][j]=1;
		}
	}
	fin>>n>>m;
	for(register int i=0;i<m;++i)
	{
		fin>>ch1>>ch2;
		a[ch1-'a'][ch2-'a']=0;
		a[ch2-'a'][ch1-'a']=0;
	}
	fin.close();

	for(register int i=2;i<=n;++i)
	{
		for(register int j=0;j<26;++j)
		{
			for(register int k=0;k<26;++k)
			{
				best[j][i]+=a[j][k]*best[k][i-1];
				best[j][i]%=MOD;
			}
		}
	}

	for(register int i=0;i<26;++i)
	{
		sol+=best[i][n];
	}

	fout<<sol;
	fout.close();
	return 0;
}