Cod sursa(job #767614)

Utilizator harababurelPuscas Sergiu harababurel Data 14 iulie 2012 00:12:48
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
using namespace std;

int main() {
	ifstream f("nrcuv.in");
	ofstream g("nrcuv.out");
	
	int n, m, i;
	bool bun[300][300];
	char c, d;
	
	for(c='a'; c<='z'; c++) {
		for(d='a'; d<='z'; d++) {
			bun[int(c)][int(d)]=1;
		}
	}
		
	f>>n>>m;
	for(i=1; i<=m; i++) {
		f>>c>>d;
		bun[int(c)][int(d)]=0;
		bun[int(d)][int(c)]=0;
	}
	
	int dp[1005][300];
	for(c='a'; c<='z'; c++) { 
		dp[0][int(c)]=0;
		dp[1][int(c)]=1; 
	}
	
	//nu inteleg ce se intampla
	
	for(i=1; i<=n; i++) {
		
		for(c='a'; c<='z'; c++) {
			for(d='a'; d<='z'; d++) {
				if(bun[int(c)][int(d)]) { dp[i][int(c)]+=dp[i-1][int(d)]; dp[i][int(d)]%=104659; }
			}
		}
		
	}
	
	int rez=0;
	for(c='a'; c<='z'; c++) {
		rez+=dp[n][int(c)];
		rez%=104659;
	}
	
	g<<rez<<"\n";
	
	f.close();
	g.close();
	return 0;
}