Cod sursa(job #3315830)

Utilizator LucaMirsolea14Luca Mirsolea LucaMirsolea14 Data 16 octombrie 2025 10:27:11
Problema Lista lui Andrei Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
/**
https://www.infoarena.ro/problema/nrcuv
https://www.infoarena.ro/problema/div3
*/

#include<bits/stdc++.h>
using namespace std;
ifstream fin("div3.in");
ofstream fout("div3.out");

const int M = 104659;

int fr[30], n ,m , dp[1002][27];
bitset<30> b[30];
vector<int> vv[30];

int main(){

    int i, j, x, y, cnt;
  char c;
    fin >> n >> m;
    for(i=1;i<=m;i++){
        fin >> c;
        x = c - 'a';
        fin >> c;
        y = c - 'a';
        //fout <<x << " " << y << endl;
        b[x][y] = 1;
        b[y][x] = 1;
    }

    for(i=0;i<26;i++){
        cnt=26;
        for(j=0;j<26;j++)
            if(b[i][j])
                cnt--;
            else
                vv[i].push_back(j);
        fr[i] = cnt;
    }
    for(i=0;i<26;i++)
        dp[1][i] = 1;

    for(i=2;i<=n;i++){
        for(j=0;j<26;j++){
            for(auto e : vv[j]){
                dp[i][j] += dp[i-1][e];
                dp[i][j] %= M;
            }
        }
    }
    int ans=0;
    for(i=0;i<26;i++)
        ans = (ans+dp[n][i]) % M;
    fout << ans;
}