Cod sursa(job #2777446)

Utilizator icc577Constantinescu Iustinian Cristian icc577 Data 23 septembrie 2021 12:09:26
Problema Lista lui Andrei Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <stdlib.h>
#include <stdio.h>
#define MOD 104659
int main()
{
    int n,q,i,j;
    freopen("file.in" ,"r",stdin );
    freopen("file.out","w",stdout);
    scanf("%d %d",&n,&q);
    bool mat[26][26];
    for(i=0;i<26;i++)
    {
        for(j=0;j<26;j++)
        {
            mat[i][j]=true;
        }
    }
    char c1,c2;
    for(i=0;i<q;i++)
    {
        scanf("\n%c %c",&c1,&c2);
        mat[(int)(c1-'a')][(int)(c2-'a')]=false;
        mat[(int)(c2-'a')][(int)(c1-'a')]=false;
    }
    int v[2][26];
    for(i=0;i<26;i++)
    {
        v[0][i]=1;
    }
    int it;
    for(it=1;it<n;it++)
    {
        int nxt=it%2,curr=(it+1)%2;
        for(i=0;i<26;i++)
        {
            v[nxt][i]=0;
            for(j=0;j<26;j++)
            {
                if(mat[j][i])
                {
                    v[nxt][i]+=v[curr][j];
                }
            }
        }
        for(i=0;i<26;i++)
        {
            v[nxt][i]%=MOD;
        }
    }
    int res=0;
    int last=(n-1)%2;
    for(i=0;i<26;i++)
    {
        res+=v[last][i];
    }
    printf("%d",res%MOD);
    return 0;
}