Cod sursa(job #1427622)

Utilizator LegionHagiu Stefan Legion Data 2 mai 2015 17:54:31
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>
using namespace std;
int imposibil[27][27];
int tabel[27][1001];
void rez(int acata, int lungimeramasa)
{
	int i,total=0;
	if (tabel[acata][lungimeramasa] == 0)
	{
		if (lungimeramasa == 1)
		{
			tabel[acata][lungimeramasa] = 1;
			return;
		}
		for (i = 1; i <= 26; i++)
		{
			if (imposibil[acata][i] == 0)
			{
				rez(i, lungimeramasa - 1);
				total += tabel[i][lungimeramasa - 1];
				total %= 104659;
			}
		}
		tabel[acata][lungimeramasa] = total;

	}
	else
	{
		return;
	}
}
int main()
{
	ifstream in("nrcuv.in");
	ofstream out("nrcuv.out");
	int n, m,i,total=0;
	char x, y;
	in >> n;
	in >> m;
	for (i = 1; i <= m; i++)
	{
		in >> x;
		in >> y;
		x -= 96;
		y -= 96;
		imposibil[x][y] = 1;
		imposibil[y][x] = 1;
	}
	for (i = 1; i <= 26; i++)
	{
		rez(i, n);
		total += tabel[i][n];
		total %= 104659;
	}
	out << total;
}