Cod sursa(job #1189977)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 24 mai 2014 09:42:05
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <bitset>

using namespace std;

#define mod 104659
bitset<30> ok[30];

int din[1005][30];

int main()
{
    ifstream cin("nrcuv.in");
    ofstream cout("nrcuv.out");

    int n=0,m=0,i,j,k;

    cin>>n>>m;
    for(i=0;i<26;i++)
        for(j=0;j<26;j++)
            ok[i][j]=1;

    char a,b;
    while(m--)
    {
        cin>>a>>b;
        a-='a';
        b-='a';

        ok[a][b]=0;
        ok[b][a]=0;
    }

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

    for(i=1;i<n;i++)
        for(j=0;j<26;j++)
            for(k=0;k<26;k++)
                if(ok[j][k])
                    din[i+1][k]=(din[i+1][k]+din[i][j])%mod;

    int sol=0;
    for(i=0;i<26;i++)
        sol=(sol+din[n][i])%mod;

    cout<<sol<<'\n';

    cin.close();
    cout.close();
    return 0;
}