Cod sursa(job #2519100)

Utilizator WilIiamperWilliam Damian Balint WilIiamper Data 7 ianuarie 2020 12:10:35
Problema Lista lui Andrei Scor 65
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 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]; k++)
                dp[i][j] -= dp[i-1][ litere[j][k] ];

            dp[i][j] %= 104659;

            dp[i][0] += dp[i][j];
            dp[i][0] %= 104659;
        }
    }

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