Cod sursa(job #1537934)

Utilizator vnedelcuVictor Andrei Nedelcu vnedelcu Data 28 noiembrie 2015 12:08:51
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
using namespace std;

const int MOD=104659;

int x[27][27];///matrice de marcaje pentru perechi interzise
int sol[2][27];///sol[i][j]=nr de cuvinte de lungime i care se termina cu a j-ua litera din alfabet

int main()
{
    int n,m,i,j,k,rez,aux;
    char a,b;


    ifstream in("nrcuv.in");
    in>>n>>m;
    for (i=1; i<=m; i++)
    {
        in>>a>>b;
        x[a-'a'+1][b-'a'+1]=1;
        x[b-'a'+1][a-'a'+1]=1;
    }
    in.close();

    for (i=1; i<=26; i++)
        sol[0][i]=1;///initializez linia 0

    aux=0;
    for (i=2; i<=n; i++)///iau fiecare lungime in parte
    {
        aux=1-aux;
        for (j=1; j<=26; j++)///iau fiecare litera in parte
        {
            sol[aux][j]=0;
            for (k=1; k<=26; k++)///iau din nou fiecare litera in parte
            {
                if (!x[j][k])
                {
                    sol[aux][j]+=sol[1-aux][k];
                    sol[aux][j]%=MOD;
                }
            }
        }

    }
    rez=0;
    for (i=1; i<=26; i++)
    {
        rez+=sol[aux][i];
        rez%=MOD;
    }

    ofstream out("nrcuv.out");
    out<<rez;
    out.close();
}