Cod sursa(job #749130)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 15 mai 2012 20:43:04
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
#define MOD 104659
using namespace std;
int n,m,nr[1010][26],sol;
bool pos[26][26];

void Citire()
{
	int i;
	char a,b;
	ifstream fin("nrcuv.in");
	fin>>n>>m;
	for(i=1;i<=m;i++)
	{
		fin>>a>>b;
		pos[a-'a'][b-'a']=pos[b-'a'][a-'a']=true;
	}
	fin.close();
}

void Rezolvare()
{
	int i,j,k;
	for(j=0;j<26;j++)
		nr[1][j]=1;
	for(i=2;i<=n;i++)
	{
		for(j=0;j<26;j++)
		{
			for(k=0;k<26;k++)
			{
				if(!pos[j][k])
				{
					nr[i][j]+=nr[i-1][k];
					if(nr[i][j]>=MOD)
						nr[i][j]-=MOD;
				}
			}
		}
	}
	for(j=0;j<26;j++)
	{
		sol+=nr[n][j];
		if(sol>=MOD)
			sol-=MOD;
	}
}

void Afisare()
{
	ofstream fout("nrcuv.out");
	fout<<sol<<"\n";
	fout.close();
}

int main()
{
	Citire();
	Rezolvare();
	Afisare();
	return 0;
}