Cod sursa(job #1108845)

Utilizator gabrielvGabriel Vanca gabrielv Data 16 februarie 2014 13:58:11
Problema Lista lui Andrei Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <cstdio>
 
using namespace std;
 
#define NMAX 1015
#define CH(s) ((int)(s - 'a'))
#define MOD 104569
 
int N,M;
int Sol;
 
bool DieNachbarn[28][28];
 
int DP[NMAX][NMAX];
 
void Scannen()
{
    freopen("nrcuv.in","r",stdin);
 
    scanf("%d%d\n",&N,&M);
 
    char x,y;
    while(M--)
    {
        scanf("%c %c\n",&x,&y);
 
        DieNachbarn[CH(x)][CH(y)] = DieNachbarn[CH(y)][CH(x)] = true;
    }
 
}
 
void Losen()
{
    for(int j=0;j<26;j++)
        DP[1][j] = 1;
 
    for(int i=2;i<=N;i++)
        for(int j=0;j<26;j++)
            for(int k=0;k<26;k++)
                if(!DieNachbarn[j][k])
                    DP[i][j] = (DP[i][j] + DP[i-1][k]) % MOD;
 
    for(int j=0;j<26;j++)
        Sol = (Sol + DP[N][j]) % MOD;
}
 
void Drucken()
{
    freopen("nrcuv.out","w",stdout);
 
    printf("%d\n",Sol);
}
 
int main()
{
    Scannen();
    Losen();
    Drucken();
    return 0;
}