Cod sursa(job #1424133)

Utilizator xoSauceSergiu Ferentz xoSauce Data 23 aprilie 2015 16:30:34
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <iostream>
#include <memory.h>
using namespace std;

ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");
int main(){


	int n,m;
	fin >> n >> m;
	bool viz[27][27];
	int mem[1005][27];
	memset(viz,0,sizeof(viz));
	for(int i = 0; i <=n;i++)
		for(int j = 0; j <= 'z'-'a'; j++)
			mem[i][j] = 0;

	for(int i = 0 ; i < m ; i++){
		char x,y;
		fin >> x >> y;
		viz[x-'a'][y-'a'] = true;
		viz[y-'a'][x-'a'] = true;	
	}

	for(int i = 0; i < 26; i++){
		mem[n-1][i] = 1;
	}
	for(int i = n-1; i >=0; i--){
		for(int q = 0 ; q <= 'z'-'a'; q++)
			for(int j =0; j <= 'z'-'a'; j++)
				if(!viz[q][j])
					mem[i][q] = (mem[i][q] + mem[i+1][j])%104659;
	}
	int ans = 0;
	for(int i = 0; i < 26; i++)
		ans= (1LL*ans+mem[0][i])%104659;
	fout << ans%104659 << endl;

	return 0;
}