Cod sursa(job #1873526)

Utilizator ipus1Stefan Enescu ipus1 Data 9 februarie 2017 10:28:57
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include<cstdio>
#include<vector>
#define mod 104659
using namespace std;
long long ma[27][1001];
vector<int> v[27],v2[27];
int main ()
{freopen ("nrcuv.in","r",stdin);
freopen ("nrcuv.out","w",stdout);
int n,m,i,j,k,x;
char a,b;
scanf("%d %d ",&n,&m);
for(i=1;i<=m;i++)
    {scanf("%c %c ",&a,&b);
    x=0;
    for(j=0;j<v2[a-'a'+1].size()&&x==0;j++)
        if(v2[a-'a'+1][j]==b-'a'+1)
            x=1;
    if(x==0)
        v2[a-'a'+1].push_back(b-'a'+1);
    x=0;
    for(j=0;j<v2[b-'a'+1].size()&&x==0;j++)
        if(v2[b-'a'+1][j]==a-'a'+1)
            x=1;
    if(x==0)
        v2[b-'a'+1].push_back(a-'a'+1);
    }
for(i=1;i<=26;i++)
    for(j=1;j<=26;j++)
        {x=0;
        for(k=0;k<v2[i].size()&&x==0;k++)
            if(v2[i][k]==j)
                x=1;
        if(x==0)
            v[i].push_back(j);
        }
for(i=1;i<=26;i++)
    ma[i][1]=1;
for(j=2;j<=n;j++)
    for(i=1;i<=26;i++)
        for(k=0;k<v[i].size();k++)
            ma[v[i][k]][j]=(ma[v[i][k]][j]+ma[i][j-1])%mod;
x=0;
for(i=1;i<=26;i++)
    x=(x+ma[i][n])%mod;
printf("%d",x);
return 0;
}