Pagini recente » Cod sursa (job #267424) | IAP #2: Concurs pentru studenti | IAP #2: Concurs pentru studenti | Cod sursa (job #153391) | Cod sursa (job #22366)
Cod sursa(job #22366)
#include <fstream.h>
//#include <time.h>
#define max(x,y) ((x)>(y) ? (x):(y))
unsigned long mat[4097][64],mask,t,y;
unsigned int v[65535][2],m,n;
int main()
{ifstream f("triplete.in");
ofstream g("triplete.out");
unsigned int i,j,k,x,xx,nn;
//clock_t start,end;
//start=clock();
f>>n>>m;
for(i=1;i<=m;i++)
{f>>v[i][0]>>v[i][1];
mat[v[i][0]-1][(v[i][1]-1)/64]+=1<<((v[i][1]-1)%64);
mat[v[i][1]-1][(v[i][0]-1)/64]+=1<<((v[i][0]-1)%64);
}
f.close();
nn=n/64;
for(i=1;i<=m;i++)
{x=max(v[i][0],v[i][1]);
j=x/64;
y=mat[v[i][0]-1][j]&mat[v[i][1]-1][j];
xx=x%64;
if(y)
{mask=1<<(xx);
for(k=(xx);k<64;k++)
{if(mask&y)t++;
mask=mask<<1;
}
j++;
while(j<=nn)
{mask=1;
for(k=0;k<64;k++)
{if(mask&y)t++;
mask=mask<<1;
}
}
}
}
g<<t<<'\n';
g.close();
//end=clock();
//cout<<((end-start)*1000)/CLK_TCK;
return 0;
}