Cod sursa(job #34264)

Utilizator cos_minBondane Cosmin cos_min Data 20 martie 2007 15:05:34
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
// 2 linii
#include <stdio.h>

#define in "nrcuv.in"
#define out "nrcuv.out"
#define dim 1001

int a[28][28], m[2][28];
int n, t;

int main()
{
    char x, y;
    FILE *fin = fopen(in,"r");
    freopen(out,"w",stdout);
    
    fscanf(fin,"%d%d",&n,&t);
    fscanf(fin,"\n");
    
    char linie[5];
    
    for ( int i = 1; i <= t; i++ )
    {
        fgets(linie,5,fin);
        x = linie[0];
        y = linie[2];
        a[(int)x-48-48][(int)y-48-48] = a[(int)y-48-48][(int)x-48-48] =1;
    }
    
    for ( int i = 1; i <= 26; i++ ) m[0][i] = 1;
    
    for ( int i = 2; i <= n; i++ )
    {
        for ( int j = 1; j <= 26; j++ )
        {
            for ( int k = 1; k <= 26; k++ )
            {
                if ( !a[j][k] ) m[1][j] = (m[1][j] + m[0][k])%104659;
            }
        }
        
        for ( int j = 1; j <= 26; j++ ) 
        {
            m[0][j] = m[1][j]%104659;
            m[1][j] = 0;
        }
       // printf("\n");
    }
    
    int v = 0;
    
    for ( int i = 1; i <= 27; i++ )
        v = ( v + m[0][i] ) %104659;
    
    printf("%d",v%104659);
}