Cod sursa(job #868516)

Utilizator superman_01Avramescu Cristian superman_01 Data 31 ianuarie 2013 10:25:52
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<fstream>

#define NMax 26
#define alpha 97
#define MOD 104659
#define NMAX 1001

using namespace std;
ifstream f("nrcuv.in");
ofstream g("nrcuv.out");
int viz[NMax][NMax],DP[NMAX][NMax];
int m,n;
char a,b;
int main()
{
	
	int i;
	f>>n>>m;
	//citire
	for(i=1;i<=m;i++)
	{
		f>>a>>b;
		viz[a-alpha][b-alpha]=1;
		viz[b-alpha][a-alpha]=1;
	}
	//initializare
	for(i=0;i<=NMax-1;i++)
		DP[1][i]=1;
	int j,k;
	//dinamica
	for(i=2;i<=n;i++)
	{
		for(j=0;j<=NMax-1;j++)
		{
			for(k=0;k<=NMax-1;k++)
				if(viz[k][j]==0)//daca poate fi folosit
					DP[i][j]=(DP[i][j]+DP[i-1][k])%MOD;//dinamica
		}
	}
    
	int sol=0;
	//afisare
	for(i=0;i<=NMax-1;i++)
	   sol=sol+DP[n][i],sol%=MOD;
	g<<sol%MOD;
	f.close();
	g.close();
	return 0;
	
}