Cod sursa(job #1880442)

Utilizator Mstar_AngelComan Mara Stefania Mstar_Angel Data 15 februarie 2017 19:16:42
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<stdio.h>
#define MOD 104659
#define LIT 26
int sol[LIT][2];
int a[LIT][LIT];
int main (){
  FILE *in, *out;
  in = fopen ("nrcuv.in","r");
  out = fopen ("nrcuv.out","w");
  int n,m,i,j,act,prev,k,s;
  char l1,l2;
  fscanf (in,"%d%d",&n,&m);
  for (i=1;i<=m;i++){
    fscanf (in," ");//citeste enter
    l1 = fgetc (in);fscanf (in," ");//citeste spatiu
    l2 = fgetc (in);
    a[l2-'a'][l1-'a'] = 1;// b NU poate urma dupa a
    a[l1-'a'][l2-'a'] = 1;
  }

  for (i=0;i<LIT;i++)
    sol[i][1] = 1;// cate siruri de lung curenta (= 1) se termina in a..z

  for (k=2;k<=n;k++){//lung curenta
    act = k%2;prev = (k+1)%2;// actual & anterior; poz in vect circ de sol
    for (i=0;i<LIT;i++)
      sol[i][act] = 0;
    for (i=0;i<LIT;i++){
      for (j=0;j<LIT;j++){
        if (a[i][j] == 0)
          sol[i][act] = (sol[i][act] + sol[j][prev])%MOD;
      }
    }
  }
  act = n%2;
  s = 0;
  for (i=0;i<LIT;i++)
    s = (s + sol[i][act])%MOD;
  fprintf (out,"%d",s);





  fclose (in);
  fclose (out);
  return 0;
}