Cod sursa(job #33265)

Utilizator TabaraTabara Mihai Tabara Data 19 martie 2007 07:08:38
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <fstream>
using namespace std;

#define in "nrcuv.in"
#define out "nrcuv.out"
#define NMAX 1001

int n, m;
int sol[1001][27];
int mat[27][27];
int nrsol;

void Read();
void Dinamic();

ofstream fout ( out );

int main()
{
    Read();
    Dinamic();

    fout << nrsol%104659 << "\n";
    fout.close();
    return 0;
}

void Read()
{
     ifstream fin ( in );
     char ch;
     fin >> n >> m;
     fin.get();
     
     int i;
     char a, b;
     for ( i = 1; i <= m; ++i )
     {
         fin >> a >> b;
         int nra = a - 96;
         int nrb = b - 96;
         
         mat[nra][nrb] = 1;
         mat[nrb][nra] = 1;
         
         fin.get();
     }
     fin.close();
}

void Dinamic()
{
     int i, j, k;
     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 ( !mat[j][k] && !mat[k][j] )
                 {
                      sol[i][j] += (sol[i-1][k]%104659); 
                      sol[i][j] %= 104659;
                 }
             }
         }
     }
     
     for ( i = 1; i <= 26; ++i )
         nrsol += (sol[n][i]%104659);
}