Cod sursa(job #3203050)

Utilizator thinkphpAdrian Statescu thinkphp Data 13 februarie 2024 08:28:38
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream>
using namespace std;
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
const int NMax = 1000;
const int MOD = 104659;
int N, M, DP[NMax+5][30];
struct vecini{
    bool vec[27];
}v[27];

void Read() {
    in >> N >> M;
    for (int i = 0; i < M; i++) {
        char x, y;
        in >> x >> y; x -= 'a'-1,y -= 'a'-1;
        v[x].vec[y] =  v[y].vec[x] = 1;
    }
}

void Solve() {
    for (int i = 1; i <= 27; i++)
        DP[1][i] = 1;

    for (int i = 2; i <= N; i++) {
        for (int j = 1; j <= 26; j++)
            for (int k = 1; k <= 26; k++) {
                if (!v[j].vec[k]) DP[i][j] += DP[i-1][k];
                if(DP[i][j] >= MOD) DP[i][j] %= MOD;
            }
    }

    long long Sol=0;
    for (int i = 1; i <= 26; i++)
        Sol +=DP[N][i];
    Sol %= MOD;
    out << Sol;
}

int main() {
    Read();
    Solve();
}