Cod sursa(job #2713319)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 27 februarie 2021 18:11:22
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <cstdio>
#define NMAX 1000
#define MOD 104659
using namespace std;

int n,m;
int a[32][32],dp[NMAX+3][NMAX+3];

FILE *fin,*fout;

int main()
{
    fin=fopen("nrcuv.in","r");
    fout=fopen("nrcuv.out","w");

    fscanf(fin,"%d %d\n",&n,&m);
    for(int i=1; i<=m; i++)
    {
        char c1,c2;
        fscanf(fin,"%c %c\n",&c1,&c2);
        //marchez in matricea a ca nu pot forma cuv cu literele acestea
        a[c1-'a'][c2-'a']=1;
        a[c2-'a'][c1-'a']=1;
    }
    for(int i=0; i<='z'-'a'; i++)
    {
        dp[1][i]=1;
    }

    for(int i=2; i<=n; i++)
    {
        for(int j=0; j<='z'-'a'; j++)
        {
            for(int k=0; k<='z'-'a'; k++)
            {
                if(a[k][j]==0)
                {
                    //pot sa imi formez cuvant
                    dp[i][j]+=dp[i-1][k];
                    dp[i][j]%=MOD;
                }
            }
        }
    }

    long long int suma=0;
    for(int i=0; i<='z'-'a'; i++)
    {
        suma+=dp[n][i];
        suma%=MOD;
    }
    fprintf(fout,"%lld",suma);
    return 0;
}