Cod sursa(job #1718270)

Utilizator AnaRaduAna-Maria Radu AnaRadu Data 17 iunie 2016 10:39:31
Problema Triplete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
#define kmax 256
#define nmax 4096
#define mmax 65536
#define bit 16
unsigned int v[nmax][kmax],st[mmax],dr[mmax];
char cnt[mmax];
int main(){
    FILE *fin,*fout;
    fin=fopen("triplete.in","r");
    fout=fopen("triplete.out","w");
    unsigned int i,j,k,n,m,x,y;
    int rasp=0;
    for(i=1;i<mmax;i++)
        cnt[i]=cnt[i>>1]+(i&1);
    fscanf(fin,"%d%d",&n,&m);
    for(i=0;i<m;i++){
        fscanf(fin,"%d%d",&x,&y);
        x--;
        y--;
        unsigned int put=bit-y%bit;
        v[x][y/bit]|=(1<<(y%bit));
        v[y][x/bit]|=(1<<(x%bit));
        st[i]=x;
        dr[i]=y;
    }
    k=(n-1)/bit;
    for(i=0;i<m;i++){
        x=st[i];
        y=dr[i];
        for(j=0;j<=k;j++)
            rasp+=cnt[v[x][j]&v[y][j]];
    }
    fprintf(fout,"%d",rasp/3);
    fclose(fin);
    fclose(fout);
    return 0;
}