Cod sursa(job #2340681)

Utilizator ana_maria_zotaZota Ana Maria ana_maria_zota Data 10 februarie 2019 20:28:16
Problema Lista lui Andrei Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream>
#include <cstdio>
#define MOD 104659
using namespace std;
int n,m;
char l1,l2;
int dp[1005],dp2[1005],ap[10005][10005];
int main()
{
    freopen("nrcuv.in","r",stdin);
    freopen("nrcuv.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i=(int)'a'; i<=(int)'z'; i++)
        dp[i]=1;
    for(int i=1; i<=m; i++)
    {
        scanf("%c %c\n",&l1,&l2);
        ap[l1][l2]=1;
        ap[l2][l1]=1;
    }
    for(int p=2; p<=n; p++)
    {
        for(int i=(int)'a'; i<=(int)'z'; i++)
        {
            for(int j=(int)'a'; j<=(int)'z'; j++)
            {
                if(ap[i][j]==0)
                {
                    dp2[i]+=dp[j];
                    dp2[i]%=MOD;
                }
            }

        }
        for(int c=(int)'a'; c<=(int)'z'; c++)
        {
            dp[c]=dp2[c];
            dp2[c]=0;
        }
    }

    int sol=0;
    for(int i=(int)'a'; i<=(int)'z'; i++)
    {
        sol+=dp[i];
        sol%=MOD;
    }
    printf("%d",sol);

    return 0;
}