Pagini recente » Cod sursa (job #272733) | Cod sursa (job #1750680) | Cod sursa (job #1182553) | Cod sursa (job #639258) | Cod sursa (job #1484333)
#include <bits/stdc++.h>
using namespace std;
unsigned a[4100][130];
int n, m, X[4100], Y[4100], Lim;
inline void SetBit(int k, int x)
{
int q, r;
q = x / 32;
r = x % 32;
a[k][q] |= (1 << r);
}
int NrBitiDe1(unsigned k)
{
int nr = 0;
while (k > 0)
{
nr++;
k = k & (k - 1);
}
return nr;
}
void Citire()
{
int i, p, q;
ifstream fin("triplete.in");
fin >> n >> m;
Lim = n / 32 + 1;
for (i = 1; i <= m; i++)
{
fin >> p >> q;
if (p > q) swap(p, q);
SetBit(p, q);
X[i] = p;
Y[i] = q;
}
fin.close();
}
void Rezolva()
{
int i, j, x, y;
long long cnt;
cnt = 0;
for (i = 1; i <= m; i++)
{
x = X[i];
y = Y[i];
for (j = 0; j < Lim; j++)
cnt += NrBitiDe1(a[x][j] & a[y][j]);
}
ofstream fout("triplete.out");
fout << cnt << "\n";
fout.close();
}
int main()
{
Citire();
Rezolva();
return 0;
}