Cod sursa(job #2086181)

Utilizator smashsmash everything smash Data 11 decembrie 2017 16:45:30
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <fstream>

using namespace std;
ifstream cin ("nrcuv.in");
ofstream cout ("nrcuv.out");
int c[30][30],a[30],b[30],n,m;
void read ()
{ char z,w;
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        cin>>z>>w;
        c[z-'a'+1][w-'a'+1]=1;
        c[w-'a'+1][z-'a'+1]=1;
    }
}
void solve ()
{
    for(int i='a';i<='z';i++) a[i-'a'+1]=1;
    for(int i=2;i<=n;i++)
    {
        if(i%2==0)
        {
            for(int j='a';j<='z';j++) {
                for(int u='a';u<='z';u++)
                    if(c[j-'a'+1][u-'a'+1]==0)
                        b[u-'a'+1]=(b[u-'a'+1]+a[j-'a'+1])%104659; a[j-'a'+1]=0; }
        }
        else
        {
            for(int j='a';j<='z';j++) {
                for(int u='a';u<='z';u++)
                    if(c[j-'a'+1][u-'a'+1]==0)
                        a[u-'a'+1]=(a[u-'a'+1]+b[j-'a'+1])%104659; b[j-'a'+1]=0;}
        }
    } int sum=0;
    if(n%2==0)
    {
        for(int i='a';i<='z';i++)
            sum=(sum+b[i-'a'+1])%104659;
    }
    else
    {
        for(int i='a';i<='z';i++)
            sum=(sum+a[i-'a'+1])%104659;
    }
    cout<<sum;
}
int main()
{
    read();
    solve();
    cin.close();
    cout.close();
    return 0;
}