Cod sursa(job #5896)

Utilizator mariusdrgdragus marius mariusdrg Data 15 ianuarie 2007 22:27:18
Problema Lista lui Andrei Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<stdio.h>


const int maxn = 5000;
const int maxn2 = 400;


int a[maxn2][maxn2];
int mat[maxn2][maxn2];
int i;
int j;
int m;
int k;
int n;

char c1;
char c2;

int main()
{
        freopen("nrcuv.in","r",stdin);
        freopen("nrcuv.out","w",stdout);
        scanf("%d %d\n",&n,&m);
        for(i=1;i<=m;i++)
        {
                scanf("%c %c ",&c1,&c2);
                a[c1-'a'+1][c2-'a'+1]=1;
                a[c2-'a'+1][c1-'a'+1]=1;
        }
        for(i=1;i<=26;i++)
        {
                mat[1][i]=1;
        }
        for(i=1;i<=n;i++)
                for(j=1;j<=26;j++)
                        for(k=1;k<=26;k++)
                        {
                                if (a[j][k]==0)
                                {
                                        mat[i+1][k]=(mat[i+1][k]+mat[i][j])%104659;
                                }
                        }
        int sum=0;
        for(j=1;j<=26;j++)
        {
                sum= (sum+mat[n][j])%104659;
        }
        printf("%d\n",sum);

        return 0;
}