Cod sursa(job #942785)

Utilizator teoionescuIonescu Teodor teoionescu Data 23 aprilie 2013 16:12:53
Problema Lista lui Andrei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<fstream>
using namespace std;
ifstream in("nrcuv.in");
ofstream out("nrcuv.out");
const int N = 1005;
const int MOD = 104659;
int ad[30][30],d[N][30];
int n,m,sum;
char c1,c2;
void afisaread(){
    int i,j;
    for(i=1;i<=26;i++){
        for(j=1;j<=26;j++) out<<ad[i][j]<<' ';
        out<<'\n';
    }
}
void afisared(){
    int i,j;
    for(i=1;i<=n;i++){
        for(j=1;j<=26;j++) out<<d[i][j]<<' ';
        out<<'\n';
    }
}
int main(){
    int i,j,k;
    in>>n>>m;
    for(i=1;i<=m;i++){
        in>>c1>>c2;
        ad[int(c1)-'a'+1][int(c2)-'a'+1]=1;
        ad[int(c2)-'a'+1][int(c1)-'a'+1]=1;
    }
    //afisaread(); out<<'\n';
    for(j=1;j<=26;j++) d[1][j]=1;
    for(i=2;i<=n;i++)
        for(j=1;j<=26;j++)
            for(k=1;k<=26;k++) if(ad[k][j]==0 && ad[j][k]==0){
                d[i][j]+=d[i-1][k];
                d[i][j]%=MOD;
            }
    //afisared(); out<<'\n';
    for(j=1;j<=26;j++){
        sum+=d[n][j];
        sum%=MOD;
    }
    out<<sum;
    return 0;
}