Cod sursa(job #219580)

Utilizator alexeiIacob Radu alexei Data 7 noiembrie 2008 17:22:25
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<stdio.h>
#define alpha 26
#define NMAX 1024
#define MOD 104659

bool L[alpha+6][alpha+6];
int A[alpha+6][NMAX];

void read(const int M)
{    
    int a1,a2;
    char ch1,ch2;
    
    for(int i=1; i<=M; ++i){
             scanf("%c %c\n",&ch1,&ch2);
             a1=(int)ch1 - 96;a2=(int)ch2 - 96;
             L[a1][a2]=L[a2][a1]=1;
    }
    
}
void solve(const int N)
{
     int i,j,k;
     
     for(i=1; i<=alpha; ++i) A[i][1]=1;
     
     for(i=2; i<=N; ++i)
              for(j=1; j<=alpha; ++j)
                       for(k=1; k<=alpha; ++k)
                       {
                                          if( !L[j][k] )
                                          A[j][i]=(A[j][i]+A[k][i-1])%MOD;
                       }

}

void show(const int N)
{
     int ANS=0;
     for(int i=1; i<=alpha; ++i)
             ANS=(ANS+A[i][N])%MOD;
     printf("%d\n",ANS);
}

int main()
{
    freopen("nrcuv.in","r",stdin);
    freopen("nrcuv.out","w",stdout);
    
    int N,M;
    scanf("%d%d\n",&N,&M);
    
    read(M);
    
    solve(N);
    
    show(N);
    
    return 0;
}