Pagini recente » Cod sursa (job #1944595) | Cod sursa (job #3273595) | Cod sursa (job #2920590) | Cod sursa (job #3249366) | Cod sursa (job #28707)
Cod sursa(job #28707)
#include <stdio.h>
#include <math.h>
const int B=32;
long m,n;
long solutie;
long muc[65537][2];
unsigned long mat[4098][300];
void citire(){
FILE *in;
long i,x,y,j,y1,x1;
in=fopen("triplete.in","r");
fscanf(in,"%ld %ld",&n,&m);
j=0;
for(i=0;i<m;i++){
fscanf(in,"%ld %ld",&x,&y);
x--;y--;
muc[i][0]=x;muc[i][1]=y;
j=y/B;
y1=y%B;
// if(j!=0) y1++;
mat[x][j]+= 1<<y1;
j=x/B;
x1=x%B;
// if(j!=0||x==B) x1++;
mat[y][j]+= 1<<x1;
}
fclose(in);
}
long formula(long k,long l,int mm){
long x,i,j;
x=mat[k][mm]&mat[l][mm];
i=B+1;j=0;
while(x!=0){
if((x-(1<<i))>=0){ j++;x=x-(1<<i);}
i--;
}
return j;
}
void procesare(){
long i,k,l,j;
for(i=0;i<m;i++){
k=muc[i][0];
l=muc[i][1];
// for(j=0;j<=n/B;j++)
j=0;
do{
solutie+=formula(k,l,j);
j++;
}while(j<=(n/B));
}
}
void scriere(){
FILE *out;
out=fopen("triplete.out","w");
fprintf(out,"%ld",solutie/3);
fclose(out);
}
int main(){
citire();
procesare();
scriere();
return 0;
}