Cod sursa(job #1841162)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 5 ianuarie 2017 13:30:04
Problema Triplete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
# include <cstdio>
# include <fstream>
# define DIM 4100
# define DIM1 66000
# define BASE 32
using namespace std;
int b[DIM][DIM/BASE],st[DIM1],dr[DIM1],n,m,x,y,i,j,sol;
int nrBiti(int x){
    int nr=0;
    while(x){
        nr++;
        x-=(x&(-x));
    }
    return nr;
}
int main () {
    freopen("triplete.in","r",stdin);
    freopen("triplete.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=m;i++){
        scanf("%d%d",&st[i],&dr[i]);
        if(st[i]>dr[i])
            swap(st[i],dr[i]);
        b[st[i]][dr[i]/BASE]+=(1<<((dr[i]-1)%BASE));
    }
    for(i=1;i<=m;i++)
        for(j=0;j<=n/BASE;j++)
            sol+=nrBiti(((b[st[i]][j])&(b[dr[i]][j])));
    printf("%d\n",sol);
    return 0;
}