Cod sursa(job #549103)

Utilizator liv182copoiu liviu liv182 Data 8 martie 2011 10:04:14
Problema Componente tare conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include<cstdio>
int max=-200000;
int n,nr1[2500000],v[4100][210];
long long sol;
void read()
{
    freopen("triplete.in","r",stdin);
    freopen("triplete.out","w",stdout);
    int m,x,y;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d",&x,&y);
        v[x][y/20]=(v[x][y/20]|(1<<(y%20)));
        v[y][x/20]=(v[y][x/20]|(1<<(x%20)));
    }
}
void init()
{
    for(int i=1;i<max;i++)
        nr1[i]=nr1[i>>1]+(i&1);
}
void solve()
{
    for(int i=1;i<=n;i++)
        for(int j=0;j<=n/20;j++)
            for(int k=1,p=0;k<max;k<<=1,p++)
                if(v[i][j]&k)
                    for(int t=0;t<=n/20;t++)
                        sol+=(long long)nr1[v[i][t]&L[p+j*20][t]];
}
int main()
{
    read();
    init();
    for(int i=1;i<=n;i++)
        for(int j=0;j<=n/20;j++)
            for(int k=1,p=0;k<max;k<<=1,p++)
                if(v[i][j]&k)
                    for(int t=0;t<=n/20;t++)
                        sol+=(long long)nr1[v[i][t]&L[p+j*20][t]];
    printf("%lld",sol/6);
    return 0;
}