Pagini recente » Istoria paginii rotatie-lexicografic-minima | Cod sursa (job #670742) | Cod sursa (job #1345837) | Cod sursa (job #164670) | Cod sursa (job #1388752)
#include <fstream>
#define BY 30
using namespace std;
ifstream fin ("triplete.in");
ofstream fout ("triplete.out");
int N, M, sol;
int x[66000], y[66000];
int V[4100][4100 / BY + 16];
int Get_Bits(int nr)
{
int nr_bits = 0;
while (nr) {
if (nr & 1) nr_bits += 1;
nr >>= 1;
}
return nr_bits;
}
int main()
{
fin >> N >> M;
for (int i = 1; i <= M; i++)
{
fin >> x[i] >> y[i];
if (x[i] > y[i]) swap(x[i], y[i]);
V[x[i]][y[i] / BY] |= (1 << (y[i] % BY));
}
for (int i = 1; i <= M; i++) {
for (int j = 0; j <= N / BY; j++) {
sol += Get_Bits(V[x[i]][j] & V[y[i]][j]);
}
}
fout << sol << '\n';
fout.close();
return 0;
}