Cod sursa(job #1840571)

Utilizator pas.andreiPopovici Andrei-Sorin pas.andrei Data 4 ianuarie 2017 16:18:13
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <cstdio>
#include <iostream>
#include <queue>
#include <vector>
#include <fstream>
#include <algorithm>
#include <string>
#include <iomanip>
#include <cstring>
#include <map>
#include <iomanip>
#include <unordered_map>
#include <stack>
#include <bitset>
#include <cctype>
#include <unordered_set>
#define MOD 104659
#define pb push_back
#define INF 0x3f3f3f3f
#define INFLL (1LL*INF*INF)
#define ll long long
#define NMAX 1005

using namespace std;

typedef pair<int, int> pii;

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

int blocat[30][30],dp[NMAX][30];

int main() {
	int n,m,i,j,k;
	char c1,c2;

	fin>>n>>m;
	for(i=0;i<m;++i) {
		fin>>c1>>c2;

		blocat[c1-'a'][c2-'a']=blocat[c2-'a'][c1-'a']=1;
	}

	for(i=0;i<26;++i) dp[1][i]=1;
	for(i=2;i<=n;++i) {
		for(j=0;j<26;++j) {
			for(k=0;k<26;++k) {
				if(!blocat[j][k])
					dp[i][j]=(dp[i][j]+dp[i-1][k])%MOD;
			}
		}
	}

	int res=0;
	for(i=0;i<26;++i) res=(res+dp[n][i])%MOD;

	fout<<res;

	return 0;
}