Cod sursa(job #2339892)

Utilizator SoranaAureliaCatrina Sorana SoranaAurelia Data 9 februarie 2019 15:08:33
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <cstdio>

#define MOD 104659
using namespace std;

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

void mat(){

    char c, b;
    for(int i=1;i<=m;i++)
    {
        scanf("%c %c\n",&c,&b);
        inter[c-'a'][b-'a']++;
        inter[b-'a'][c-'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;
}