Cod sursa(job #307911)

Utilizator perticas_catalinperticas catalin perticas_catalin Data 25 aprilie 2009 15:27:25
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<stdio.h>
#include<string.h>
FILE*fin=fopen("nrcuv.in","r");
FILE*fout=fopen("nrcuv.out","w");
#define mod 104659
int g[30][30],a[2][30],n,m;
int main()
{
    int nw,old,i,j,k,rez;
    char l1,l2,sp;
    fscanf(fin,"%d%d\n",&n,&m);
    memset(g,0,sizeof(g));
    for(i=1;i<=m;i++)
    {
      fscanf(fin,"%c%c%c\n",&l1,&sp,&l2);
      g[l1-'a'][l2-'a']=1;
      g[l2-'a'][l1-'a']=1;
    }
    for(i=0;i<26;i++)
      a[1][i]=1;
    nw=1;  
    for(i=2;i<=n;i++)
    {
      nw=i%2;
      old=!nw;
      for(j=0;j<26;j++) a[nw][j]=0;
      
      for(j=0;j<26;j++)
        for(k=0;k<26;k++)
          if(!g[j][k]) a[nw][k]=(a[nw][k]+a[old][j])%mod;
      
    }  
    rez=0;
    for(j=0;j<26;j++)
      rez=(rez+a[nw][j])%mod;
    fprintf(fout,"%d",rez);  
    fclose(fin);
    fclose(fout);
    return 0;
}