Cod sursa(job #981984)

Utilizator TibixbAndrei Tiberiu Tibixb Data 8 august 2013 11:59:31
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
#define MOD 104659

using namespace std;
int i, a[27][2002], c[27][27], j, n, m, k, s;
char c1, c2;
FILE*fin=fopen("nrcuv.in","r");
ofstream fout("nrcuv.out");
int main(){
    fscanf(fin, "%d%d\n", &n, &m);
	for(i=1; i<=m; i++){
		fscanf(fin, "%c %c\n", &c1, &c2);
		c[c1-'a'][c2-'a']=c[c2-'a'][c1-'a']=1;
	}
	for(j=0; j<=25; j++)
		a[j][0]=1;
	for(i=1; i<n; i++)
		for(j=0; j<=25; j++){
			//if(a[j][i]==0) calculez a[j][i]
			//a[j][i] = nr de siruri de lumgime i care au ultimul element litera j
			//formez un astfel de si din unul de lungime i-1 punand la finalul lui litera j
			//am informatii despre aceste siruri pe coloana i-1;
			for (k=0;k<=25;k++)
				if (c[k][j] == 0) {
					a[j][i] += a[k][i-1];
					//a[j][i] %= MOD;
					if (a[j][i] >= MOD)
						a[j][i] -= MOD;
				}
		}
	for(j=0; j<=25; j++)
		s+=a[j][n-1];
	fout<<s%MOD<<"\n";

return 0;
}