Cod sursa(job #2637086)

Utilizator etohirseCristi Cretu etohirse Data 21 iulie 2020 10:49:17
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.53 kb
#include <fstream>
using namespace std;
ifstream cin("nrcuv.in");
ofstream cout("nrcuv.out");
const int M=104659;
char f[30][30]; long long dp[1003][30], ans;
int a, b;
int main(){
	cin >> a >> b;
	for(int i=0; i<b; ++i){
		char x, y;
		cin >> x >> y;
		f[x-'a'][y-'a']=1;
		f[y-'a'][x-'a']=1;
	}
	for(int i=0; i<26; ++i)
		dp[1][i]=1;
	for(int i=2; i<=a; ++i)
		for(int j=0; j<26; ++j)
			for(int k=0; k<26; ++k)
				if(!f[k][j]&&!f[j][k])
					dp[i][j]=(dp[i][j]+dp[i-1][k])%M;
	for(int i=0; i<26; ++i)
		ans=(ans+dp[a][i])%M;
	cout << ans;
}