Pagini recente » Cod sursa (job #1646643) | Cod sursa (job #1337557) | Cod sursa (job #1309764) | Cod sursa (job #632151) | Cod sursa (job #1548448)
#include <fstream>
using namespace std;
ifstream fin("triplete.in");
ofstream fout("triplete.out");
typedef unsigned int uint;
const int nmax= 4096;
const int bit= 32;
const int emax= nmax/bit;
int x[nmax+1], y[nmax+1], pre[256];
uint edge[nmax][emax];
int biti1( uint x ) {
int ans= 0;
for ( ; x>0; x/= 256 ) {
ans+= pre[x%256];
}
return ans;
}
int main( ) {
/*for ( int i= 1; i<256; ++i ) {
pre[i]= pre[i/2];
if ( i%2==1 ) {
++pre[i];
}
}*/
int n, m;
fin>>n>>m;
for ( int i= 1; i<=m; ++i ) {
fin>>x[i]>>y[i];
--x[i], --y[i];
edge[x[i]][y[i]/bit]+= ((uint)1<<(y[i]%bit));
edge[y[i]][x[i]/bit]+= ((uint)1<<(x[i]%bit));
}
int sol= 0;
for ( int i= 1; i<=m; ++i ) {
for ( int j= 0; j<emax; ++j ) {
uint a= ((uint)edge[x[i]][j]&edge[y[i]][j]);
//int b= biti1(a);
int b= 0;
sol+= b;
}
}
fout<<sol/3<<"\n";
return 0;
}