Cod sursa(job #463447)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 15 iunie 2010 21:22:32
Problema Triplete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>

#define file_in "triplete.in"
#define file_out "triplete.out"

int n,m;
int nrb[1<<16+10];
int v[4040][420];
int a[4040];
int b[4040];

void citire()
{
    int i;

    freopen(file_in,"r",stdin);
    freopen(file_out,"w",stdout);

    scanf("%d %d",&n,&m);
    for (i=1;i<=1<<16;++i)
          nrb[i]=nrb[i>>1]+(i&1);

    for (i=1;i<=m;++i)
    {
        scanf("%d %d",&a[i],&b[i]);
        v[a[i]][b[i]>>4]+=(1<<(b[i]&16));
        v[b[i]][a[i]>>4]+=(1<<(a[i]&16));
    }

}

void solve()
{
    int i,j,nr=0;
    for (i=1;i<=m;++i)
          for (j=0;j<=n/16;++j)
                nr+=nrb[v[a[i]][j]&v[b[i]][j]];
    printf("%d", nr/3);
}


int main()
{
    citire();
    solve();

    return 0;

}