Cod sursa(job #1509103)

Utilizator Vlad_317Vlad Panait Vlad_317 Data 23 octombrie 2015 15:09:14
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>

using namespace std;

const int MOD = 104659;

bool exp[27][27];
int d[1001][27];/// d[i][j] = cate cuvinte cu i litere se termina in litera j
/// d[i][j]=sum(d[i-1][0...j] fara exceptii)

int main()
{
    FILE *fin,*fout;

    fin=fopen("nrcuv.in","r");
    fout=fopen("nrcuv.out","w");

    int n,m;

    fscanf(fin,"%d%d\n",&n,&m);

    for(int i=1;i<=m;i++)
    {
        char x,y;
        fscanf(fin,"%c %c\n",&x, &y);
        exp[x-'a'][y-'a']=1;
        exp[y-'a'][x-'a']=1;
    }

    for(int i=0;i<26;i++)
        d[1][i]=1;

    for(int i=1;i<=n;i++)
        for(int j=0;j<26;j++)
        {
            for(int k=0;k<26;k++)
                if(exp[j][k]==0 && exp[k][j]==0)
                    d[i][j]=(d[i][j]+d[i-1][k]) % MOD;
        }
    int s=0;
    for(int i=0;i<26;i++)
        s=(d[n][i]+s) % MOD;
    fprintf(fout,"%d",s);

    return 0;
}