Cod sursa(job #2396093)

Utilizator ardutgamerAndrei Bancila ardutgamer Data 3 aprilie 2019 11:04:34
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda simulare_03_04_2019 Marime 0.89 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

const int NMAX = 1005;
const int MOD = 104659;
int dp[NMAX][30];
int rel[35][35];

int main()
{
    freopen("nrcuv.in","r",stdin);
    freopen("nrcuv.out","w",stdout);
    int n , m;
    char a,b;
    scanf("%d%d\n",&n,&m);
    for(int i = 1 ; i <= m ; i++)
    {
        scanf("%c %c\n",&a,&b);
        rel[a-'a'][b-'a']=1;
        rel[b-'a'][a-'a']=1;
    }
    int sum = 0;
    for(int i = 0 ; i < 26 ; i++)
        dp[1][i] = 1;
    for(int i = 1 ; i <= n ; i++)
    {
        for(int j = 0 ; j <= 25 ; j++)
        {
            for(int k = 0 ; k <= 25 ; k++)
                if(rel[k][j] == 0)
                    dp[i][j] = (dp[i][j] + dp[i-1][k]) % MOD;
        }
    }
    for(int i = 0 ; i <= 25 ; i++)
        sum = (sum + dp[n][i]) % MOD;
    printf("%d",sum);
    return 0;
}