Cod sursa(job #3353592)

Utilizator RuxandraPro12_Metehau Ruxandra Maria RuxandraPro12_ Data 8 mai 2026 15:09:28
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream cin ("nrcuv.in");
ofstream cout ("nrcuv.out");

const int MOD = 104659;

int n, m, dp[1005][30];

vector <int> v[30];

int main()
{
    // 97 122
    // dp[i][j] = cate cuvinte de i litere cu ultima litera j
    cin >> n >> m;
    for (int i = 1; i <= m; i++)
    {
        char a, b;
        cin >> a >> b;
        v[int(a) - 97].push_back(int(b) - 97);
        v[int(b) - 97].push_back(int(a) - 97);
    }
    for (int i = 0; i <= 25; i++)
        dp[1][i] = 1;
    for (int i = 2; i <= n; i++)
    {
        for (int j = 0; j <= 25; j++)
        {
            for (int k = 0; k <= 25; k++)
            {
                bool flag = true;
                for (int l = 0; l < v[j].size(); l++)
                {
                    if (v[j][l] == k)
                    {
                        flag = false;
                        break;
                    }
                }
                if (flag == false)
                    continue;
                dp[i][k] += dp[i - 1][j];
                dp[i][k] %= MOD;
            }
        }
    }
    int ans = 0;
    for (int i = 0; i <= 25; i++)
    {
        ans += dp[n][i];
        ans %= MOD;
    }
    cout << ans << "\n";
    return 0;
}