Cod sursa(job #2367716)

Utilizator SoranaAureliaCatrina Sorana SoranaAurelia Data 5 martie 2019 12:02:12
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda bv_10 Marime 1.07 kb
#include <cstdio>

#define MOD 104659
using namespace std;

int inter[27][27];

int n, m;
int d[1005][27];

void mat(){

    char x, y;
    for(int i=1;i<=m;i++)
    {
        scanf("%c %c\n",&x,&y);
        inter[x-'a'][y-'a']++;///sa nu poata fi una dupa alta
        inter[y-'a'][x-'a']++;
    }
}

int progrDin(){

    /**
      d[i][x] = numarul de cuvinte de i litere
                care se termina cu litera x

      d[i][y]=suma(d[i][x])
    */
    for(int i=0; i<=26;i++)
        d[1][i]=1;
    for(int i=2; i<=n; i++)
    {
        for(int j=0; j<26; j++)
        {
            for(int k=0; k<26;k++)
                if(inter[j][k]==0 && inter[k][j]==0)///daca pot fi una dupa alta
                    d[i][j]=(d[i][j]+d[i-1][k])%MOD;
        }

    }
    int nr=0;
    for(int i=0; i<26; i++)
    {
        nr=(d[n][i]+nr)%MOD;
    }
    return (nr%MOD);

}
int main()
{
    freopen("nrcuv.in","r",stdin);
    freopen("nrcuv.out","w",stdout);
    scanf("%d %d\n",&n, &m);
    mat();
    printf("%d",progrDin());
    return 0;
}