Cod sursa(job #464282)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 19 iunie 2010 17:18:31
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <vector>

using namespace std;

#define file_in "nrcuv.in"
#define file_out "nrcuv.out"

#define nmax (1<<11)

int n,m;
int v[26][26];
int q[nmax][26];

void citire()
{
    char a,b;
    freopen(file_in,"r",stdin);
    freopen(file_out,"w",stdout);

    scanf("%d %d\n", &n,&m);
    for (int i=1;i<=m;++i)
    {
        scanf("%c %c ", &a, &b);
        v[a-'a'+1][b-'a'+1]=1;
        v[b-'a'+1][a-'a'+1]=1;
    }

}

#define mod 104659

void solve()
{
    int i,j,k;
     for (i=1;i<=26;++i)
          q[1][i]=1;

     for (i=1;i<=n;++i)
          for (j=1;j<=26;++j)
               for (k=1;k<=26;++k)
                    if (v[j][k]==0)
                        q[i+1][k]=(q[i+1][k]+q[i][j])%mod;
     int suma=0;
     for (i=1;i<=26;++i) suma=(suma+q[n][i])%mod;

     printf("%d\n", suma);
}

int main()
{
    citire();
    solve();

    fclose(stdin);
    fclose(stdout);

    return 0;
}