Cod sursa(job #1563737)

Utilizator Andreiii500Andrei Puiu Andreiii500 Data 6 ianuarie 2016 16:10:59
Problema Lista lui Andrei Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<iostream>
#include<fstream>
using namespace std;

#define MOD 104659
#define N 1001

ifstream in("nrcuv.in");
ofstream out("nrcuv.out");

int sol[26][N];
int not_vecin[26][26];
int n,m;

void afis_vecini()
{
    int i,j;

    for(i=0; i<8; ++i)
    {
        for(j=0; j<8; ++j) out<<not_vecin[i][j]<<" ";
        out<<"\n";
    }
}

int main()
{
    char a,b;
    int i,j,k,s;

    in>>n>>m;

    for(i=1; i<=m; ++i)
    {
        in>>a>>b;
        //cout<<a<<" "<<b<<"\n";
        a -= 'a';
        b -= 'a';
        not_vecin[a][b] = 1;
        not_vecin[b][a] = 1;
    }

    //afis_vecini();

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

    for(j=1; j<=m; ++j) /// 'j' litere
    {
        for(i=0; i<26; ++i) /// calculez cate posibilitati sunt care se termina in litera 'i'
            for(k=0; k<26; ++k) /// si care continua litera 'k'
                if(not_vecin[i][k] == 0)
                {
                    sol[i][j] = (sol[i][j] + sol[k][j-1]) % MOD;
                }
    }

    s=0;
    for(i=0; i<26; ++i) s = (s + sol[i][n]) % MOD;

    out<<s;

    return 0;
}