Cod sursa(job #1790779)

Utilizator gapdanPopescu George gapdan Data 28 octombrie 2016 18:24:55
Problema Lista lui Andrei Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
#include <stdlib.h>
#define NMAX 1005
#define MOD 104659

int i,n,m,j,k;
char c1,c2;
int mat[30][30],dp[NMAX][30];

int main()
{
    FILE *in,*out;
    in = fopen("nrcuv.in","r");
    out = fopen("nrcuv.out","w");
    fscanf(in,"%d%d",&n,&m);
    c1=fgetc(in);
    for(i=1; i<=m; ++i)
    {
        c1=fgetc(in);
        c2=fgetc(in);
        c2=fgetc(in);
        mat[c1-'a'][c2-'a']=1;
        mat[c2-'a'][c1-'a']=1;
        c1=fgetc(in);
    }
    for(i=0;i<26;++i) dp[1][i]=1;
    for(i=2;i<=n;++i)
        for(j=0;j<26;++j)
        {
            int sum=0;
            for(k=0;k<26;++k)
                if(mat[k][j] == 0)
                {
                    sum  = (sum + dp[i-1][k]);
                    if (sum > MOD) sum -= MOD;
                }
            dp[i][j]=sum;
        }
    int sol=0;
    for(i=0;i<26;++i)
        {
            sol += dp[n][i];
            if(sol > MOD) sol -= MOD;
        }
    fprintf(out,"%d\n",sol);
    return 0;
}