Cod sursa(job #983156)

Utilizator mitrutstrutMitrea Andrei Ionut mitrutstrut Data 10 august 2013 23:06:32
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 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;
}