Cod sursa(job #1284127)

Utilizator Vali_DeaconuVali Deaconu Vali_Deaconu Data 6 decembrie 2014 11:31:00
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <cstring>
#define MOD 104659

using namespace std;

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

int a[28], b[28];
int i, n, m, sol, j, k;
char l1, l2;

int x[28][28];

int main()
{


    fin >> n >> m;

    for (i=1; i<=m; i++) {
        fin >> l1 >> l2;
        x[l1-'a'][l2-'a'] = 1;
        x[l2-'a'][l1-'a'] = 1;
    }

    // coloana 1
    for (i=0;i<26;i++)
        a[i] = 1;

    for (j=2;j<=n;j++) {
        memset(b, 0, sizeof(b));
        for (i=0;i<26;i++) {
            // D[i][j] = ? siruri de lungime j se termin cu litera i
            //    b[i] =
            for (k=0;k<=26;k++) {
                //incerc sa pun litera i la finalul unui sir care \
                //se termina cu litera k de lungime j-1
                if (x[ k ][ i ] == 0) {
                    b[i] += a[k];
                    b[i] = b[i] % MOD;
                }
            }
        }
        memcpy(a, b, sizeof(a));
    }

    for (i=0;i<26;i++) {
        sol += a[i];
        if (sol >= MOD)
            sol -= MOD;
    }

    fout << sol;

    return 0;
}