Cod sursa(job #463448)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 15 iunie 2010 21:25:07
Problema Triplete Scor 100
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;
char nrb[1<<16+10];
int v[4097][420];
int a[80040];
int b[80040];

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;

}