Cod sursa(job #944643)

Utilizator heracleRadu Muntean heracle Data 29 aprilie 2013 10:13:24
Problema Lista lui Andrei Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>

using namespace std;
ifstream in ("nrcuv.in");
ofstream out ("nrcuv.out");

int v[1001][27],K=0;
bool icp[26][26];
const int M=104659;

long long parcurge(long long sum)
{
    long long sum2=0;
    for(int i=0; i<26; i++)
    {
        for(int j=0; j<26; j++)
            if(icp[i][j]==0)
                v[K][i]=(v[K][i]+v[K-1][j])%M;
        sum2=(v[K][i]+sum2)%M;
    }
   // out<<"!";
    return sum2;
}

int main()
{
    int n,m,i,j;
    bool bun;
    char a,b;
    in>>n>>m;
    for(i=1; i<=m; i++)
    {
        in>>a>>b;
        a=a-97;
        b=b-97;
        icp[a][b]=icp[b][a]=1;
    }
    long long sum=0;
    for(i=0; i<26; i++)
    {
        for(j=0; j<26; j++)
            if(icp[i][j]==0)
                v[2][i]++;

        sum=(v[2][i]+sum)%M;
    }
    K=3;
    for(i=2; i<=n-1; i++)
    {
        sum=parcurge(sum);
        K++;
    }
    out<<sum;

    return 0;
}