Cod sursa(job #887066)

Utilizator kissannaKiss Anna kissanna Data 23 februarie 2013 15:14:25
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
using namespace std;

int main()
{const int MOD=104659;
FILE *F,*G;
F=fopen("nrcuv.in","r");
int N,M,x,y,k;
int A[27]={0},B[27]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,};
char a,b;
bool boo[27][27]={0};
fscanf(F,"%d %d",&N,&M);
for (x=1;x<=M;x++)
    {
        fscanf(F,"%c %c %c",&a,&a,&b);
        boo[a-'a'][b-'a']=boo[b-'a'][a-'a']=1;
    }
fclose(F);

int maxi=0;
for (x=0;x<N-1;x++)
    {for (y=1;y<=26;y++)
        for (k=1;k<=26;k++)
        {
        if (!boo[y-1][k-1])
        A[y]=(A[y]+B[k])%MOD;
        }
    for (k=1;k<=26;k++) {B[k]=A[k]; A[k]=0;}
    }
for (x=1;x<=26;x++) maxi=(maxi+B[x])%MOD;
G=fopen("nrcuv.out","w");
if (N==1) fprintf(G,"%d",26); else fprintf(G,"%d",maxi);
fclose(G);
}