Cod sursa(job #2519008)

Utilizator WilIiamperWilliam Damian Balint WilIiamper Data 6 ianuarie 2020 21:32:45
Problema Lista lui Andrei Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>

using namespace std;
ifstream fin ("nrcuv.in");
ofstream fout ("nrcuv.out");
int n, m, litere[30][30], dp[1010][30];

void citire () {
    char x, y;
    fin >> n >> m;
    int a[30][30] = {0};
    for (int i = 1; i <= m; i++) {
        fin >> x >> y;
        a[x-96][y-96] = 1;
        a[y-96][x-96] = 1;
    }

    for (int i = 1; i <= 26; i++) {
        for (int j = 1; j <= 26; j++) {
            if (a[i][j])
                litere[i][ ++litere[i][0] ] = j;
        }
    }
}

int main()
{
    citire();
    dp[1][0] = 26;
    for (int i = 1; i <= 26; i++)
        dp[1][i] = 1;
    for (int i = 2; i <= n; i++) {
        for (int j = 1; j <= 26; j++) {
            dp[i][j] = dp[i-1][0];
            for (int k = 1; litere[j][k] && dp[i][j]; k++)
                dp[i][j] -= dp[i-1][ litere[j][k] ];
           // if (dp[i][j] < 0)
                //dp[i][j] = 0;
            dp[i][0] += dp[i][j];
            dp[i][0] %= 104659;
        }
    }

    fout << dp[n][0];
    return 0;
}