Cod sursa(job #749028)

Utilizator SmarandaMaria Pandele Smaranda Data 15 mai 2012 17:21:21
Problema Lista lui Andrei Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <cstdio>
#include <vector>
#define MOD 104659
using namespace std;
long c[30][1001];
long g[30];
vector <long> a[30];
vector <long> :: iterator it;
int main () {
    long i,n,m,j,x,y,s=0,cs,s2,k;
    char ch1,ch2;

    freopen ("nrcuv.in","r",stdin);
    freopen ("nrcuv.out","w",stdout);

    for (i=0;i<='z'-'a';i++)
        c[i][1]=1;
    s=26;
    scanf("%ld%ld\n",&n,&m);
    for (i=1;i<=m;i++) {
        scanf("%c %c\n",&ch1,&ch2);
        x=ch1-'a';
        y=ch2-'a';
        a[y].push_back(x);
        a[x].push_back(y);
    }
    k=1;
    for (i=2;i<=n;i++) {
        s2=0;
        for (j=0;j<='z'-'a';j++) {
            cs=s;
            k++;
            for (it=a[j].begin();it!=a[j].end();++it)
                if (g[(*it)]!=k) {
                    cs=cs-c[(*it)][i-1];
                    g[(*it)]=k;
                }
            c[j][i]=cs;
            s2=(s2+cs)%MOD;
        }
        s=s2;
    }
    printf("%ld\n",s);
   /* for (i=0;i<=25;i++)
        printf("%ld\n",c[i][2]);*/
    return 0;
}