Cod sursa(job #3264329)

Utilizator Victor5539Tanase Victor Victor5539 Data 20 decembrie 2024 14:37:31
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <unordered_set>
#define int long long

using namespace std;
ifstream fin("nrcuv.in");
ofstream fout("nrcuv.out");


const int MAX=1000,ALPHABET=26,MOD=104659;
int dp[MAX+5][ALPHABET+5],i,n,m,sol,j,k;
char a,b;


int nr(char a)
{
    return a-'a'+1;
}

unordered_set<int> s[ALPHABET+5];

signed main()
{
    fin>>n>>m;

    while (m)
    {
        fin>>a>>b;
        int val=nr(a),val2=nr(b);
        s[val].insert(val2);
        s[val2].insert(val);

        m--;
    }


    for (i=1; i<=ALPHABET; i++)
    dp[1][i]=1;

    for (i=1; i<n; i++)
    {
        for (j=1; j<=ALPHABET; j++)
        {
            for (k=1; k<=ALPHABET; k++)
            {
                if (!s[j].count(k))
                    dp[i+1][k]=(dp[i+1][k]+dp[i][j])%MOD;
            }
        }
    }


    for (i=1; i<=ALPHABET; i++)
        sol=(sol+dp[n][i])%MOD;

    fout<<sol;

    return 0;
}