Cod sursa(job #5486)

Utilizator nemesisIchim Alexandru Eugen nemesis Data 12 ianuarie 2007 19:39:02
Problema Lista lui Andrei Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<stdio.h>

int a[28][1001], nu[28][28], n, m;

void debug()
{
  for(int i=1; i<=n; ++i) {
    for(int j=1; j<=26; ++j) printf("%d ",a[i][j]);
    printf("\n");
  }
}

void solve()
{
  for(int i=1; i<=26; ++i) a[1][i]=1;
  for(int i=2; i<=n; ++i) {
    for(int j=1; j<=26; ++j) 
      for(int k=1; k<=26; ++k) if( !nu[j][k]) a[i][j]+= a[i-1][k];
  }
  int suma=0;
  for(int i=1; i<=26; ++i) suma+= a[n][i];
  printf("%d\n",suma);
}

int main()
{
  freopen("nrcuv.in","r",stdin);
  scanf("%d %d\n",&n,&m);
  char x, y;
  for(int i=1; i<=m; ++i) {
    scanf("%c %c\n",&x,&y);
    nu[x-'a'+1][y-'a'+1]=1;
    nu[y-'a'+1][x-'a'+1]=1;
    //  printf("%d %d\n",x-'a'+1, y-'a'+1);
  }

  freopen("nrcuv.out","w",stdout);
  solve();
  //debug();


  return 0;
}