Cod sursa(job #2539655)

Utilizator belacPhitz Me belac Data 6 februarie 2020 09:26:09
Problema Lista lui Andrei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.81 kb
#include <bits/stdc++.h>
#define mod 104659
using namespace std;
ifstream f ( "nrcuv.in" );
ofstream g ( "nrcuv.out" );
int n, i, j, v[1001][26], m;
bool a[26][26];
long long s;
int main()
{
    f >> n >> m;
    char x, y;
    for ( int i = 1; i <= m; i++ )
    {

        f >> x >> y;

        a[x - 'a'][y - 'a'] = a[y - 'a'][x - 'a'] = 1;
    }

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

    for ( int i = 2; i <= n; i++ )
    {
        for ( int j = 0; j < 26; j++ )
        {
            for ( int j2 = 0; j2 < 26; j2++ )
                if ( !a[j][j2])
                { v[i][j] += v[i - 1][j2]; }

            v[i][j] = v[i][j] % mod;
        }
    }

   /* for ( int i = 1; i <= n; i++ )
    {
        for ( int j = 0; j < 26; j++ )
        { cout << v[i][j] << " "; }

        cout << '\n';
    }*/

    for ( int i = 0; i < 26; i++ )
    { s = ( s + v[n][i] ) % mod; }

    g << s;
    return 0;
}
/*
#include <fstream>
#include <iostream>
using namespace std;
#define MOD 104659
ifstream f("nrcuv.in");
ofstream g("nrcuv.out");
bool a[26][26];
int d[1001][26];
int main()
{
    int n,m,i,j,j2;
    long long s=0;
    char x,y;
    f>>n>>m;
    for(i=1;i<=m;i++)
    {
        f>>x>>y;
        a[x-'a'][y-'a']=a[y-'a'][x-'a']=1;
    }
    for(i=0;i<26;i++)
        d[1][i]=1;
    for(i=2;i<=n;i++)
    {
        for(j=0;j<26;j++)
        {
            for(j2=0;j2<26;j2++)
            {
                if(!a[j2][j])
                    d[i][j]+=d[i-1][j2];
            }
            d[i][j]%=MOD;
        }
    }
for ( int i = 1; i <= n; i++ )
    {
        for ( int j = 0; j < 26; j++ )
        { cout << d[i][j] << " "; }

        cout << '\n';
    }
    for(i=0;i<26;i++)
        s=(s+d[n][i])%MOD;
    g<<s;
    return 0;
}*/