Cod sursa(job #1025308)

Utilizator Athena99Anghel Anca Athena99 Data 9 noiembrie 2013 19:45:55
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>

using namespace std;

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

const int lmax= 26;
const int nmax= 1000;
const int mod= 104659;

bool l[lmax+1][lmax+1];
int d[nmax+1][lmax+1];

int main(  ) {
    int n, m;
    fin>>n>>m;
    for ( int i= 0; i<m; ++i ) {
        char x, y;
        fin>>x>>y;
        l[(int)x-'a'][(int)y-'a']= l[(int)y-'a'][(int)x-'a']= 1;
    }

    for ( int i= 0; i<lmax; ++i ) {
        d[1][i]= 1;
    }
    for ( int i= 2; i<=n; ++i ) {
        for ( int j= 0; j<lmax; ++j ) {
            for ( int k= 0; k<lmax; ++k ) {
                if ( l[j][k]==0 ) {
                    d[i][j]= (d[i][j]+d[i-1][k])%mod;
                }
            }
        }
    }

    int sol= 0;
    for ( int i= 0; i<lmax; ++i ) {
        sol= (sol+d[n][i])%mod;
    }
    fout<<sol<<"\n";

    return 0;
}