Pagini recente » Cod sursa (job #2442954) | Cod sursa (job #2939411) | Cod sursa (job #3178915) | Cod sursa (job #1770209) | Cod sursa (job #218309)
Cod sursa(job #218309)
#include <stdio.h>
#include <stdlib.h>
#define FIN "triplete.in"
#define FOUT "triplete.out"
#define N 4096
int n,m;
unsigned char cine[N][N/8];
typedef struct bla bla;
struct bla{
int a,b;
};
bla l[N];
const unsigned char puteri[]={1,128,64,32,16,8,4,2};
inline int numar(short x){
char nr=0;
while (x){
x&=x-1;
++nr;
}
return nr;
}
void scan(void){
int a,b,i;
freopen(FIN,"r",stdin);
freopen(FOUT,"w",stdout);
scanf("%u%u",&n,&m);
for (i=1;i<=m;++i){
scanf("%d%d",&l[i].a,&l[i].b);
a=l[i].a;b=l[i].b;
cine[a][(b>>3)+1]|=puteri[b&7];
cine[b][(a>>3)+1]|=puteri[a&7];
}
}
long long sol;
void solve(void){
int i,x,j;
//printf("%d %d %d\n",cine[1][1],cine[2][1],cine[3][1]);
for (i=1;i<=m;++i){
for (j=1;j<=n/8+1;++j){
x=cine[l[i].a][j] & cine[l[i].b][j];//printf("%d ",x);
sol+=(long long)numar(x);
}
}
}
void print(void){
printf("%lld\n",sol/(long long)3);
fclose(stdin);
fclose(stdout);
exit(0);
}
int main(void){
scan();
solve();
print();
}