Cod sursa(job #883305)

Utilizator alexarnautuArnautu Alexandru alexarnautu Data 19 februarie 2013 21:50:18
Problema Lista lui Andrei Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>

int sol[1001][29], res[29][29], n, p, i, j, k;
char a, b, sir[4];
long long solf;

int main()
{
    freopen("nrcuv.in", "r", stdin);
    freopen("nrcuv.out", "w", stdout);

    sol[1][1] = 26;
    scanf("%d %d\n", &n, &p);

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

    for(i=1;i<=26;i++)
    {
        sol[1][i] = 1;
    }

    for(i=2;i<=n;i++)
    {
        for(j=1;j<=26;j++)
        {
            for(k=1;k<=26;k++)
            {
                if(res[j][k] == 0 && res[k][j] == 0)
                {
                    sol[i][j] += sol[i-1][k];
                }
            }
        }
    }

    for(i=1;i<=26;i++)
    {
        solf += sol[n][i];
    }

    printf("%d", solf%104659);

    return 0;
}