Cod sursa(job #1739402)

Utilizator blackmanta45Andrei blackmanta45 Data 9 august 2016 13:45:22
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<fstream>
#define MOD 104659

using namespace std;
int n, m, sol, i, j, k;
char x, y;
int a[27][27];

int d[27][1010];
int main () {
    ifstream fin ("nrcuv.in");
    ofstream fout("nrcuv.out");
    fin>>n>>m;
    for (i=1;i<=m;i++) {
        fin>>x>>y;
        a[x-'a'][y-'a'] = 1;
        a[y-'a'][x-'a'] = 1;
    }

    //d[i][j] = cate cuvinte de lungime j se termina cu litara i, cu i de la 0 la 25 si j de la 1 la n
    for (i=0;i<=25;i++)
        d[i][1] = 1;

    for (int lg = 2; lg<=n; lg++) {
        for (i=0;i<=25;i++) {
            // calculez cate siruri de lungime lg se termina cu litera i
            d[i][lg] = 0;
            for (k=0;k<=25;k++)
                if (a[k][i] == 0) {
                    d[i][lg] += d[k][lg-1];
                    d[i][lg] %= MOD;
                }
        }
    }
    for (i=0;i<=25;i++) {
        sol += d[i][n];
        if (sol >= MOD)
            sol -= MOD;
    }

    fout<<sol;
    return 0;
}