Cod sursa(job #878300)

Utilizator MagnvsDaniel Constantin Anghel Magnvs Data 14 februarie 2013 12:09:52
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>
#include <string.h>
 
long v[27][27],d[1001][27];
 
int main()
{
    long n,m,i,j=1,k;
    char a[8];
    d[1][0]=27;
    freopen("nrcuv.in","r",stdin);
    freopen("nrcuv.out","w",stdout);
    scanf("%ld%ld\n",&n,&m);
    if (m==0) {for (i=1;i<n+1;i++) j=j*26%104659;printf("%ld",j);return 0;}
    for (i=1;i<m+1;i++)
    {
        fgets(a,5,stdin);
        v[(int)a[0]-96][(int)a[2]-96]=1;
        v[(int)a[2]-96][(int)a[0]-96]=1;
    }
    for (i=1;i<27;i++) d[1][i]=1;
    for (i=1;i<n;i++)
        for (j=1;j<27;j++)
            for (k=1;k<27;k++) if ((v[j][k]==0)&&(v[k][j]==0))
            {
                d[i+1][k]=(d[i+1][k]+d[i][j])%104659;
                d[i+1][0]=(d[i+1][0]+d[i][j])%104659;
            }
    printf("%ld",d[n][0]);
    return 0;
}