Pagini recente » Cod sursa (job #956495) | Cod sursa (job #2020001) | Cod sursa (job #857174) | Cod sursa (job #95914) | Cod sursa (job #2676304)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("triplete.in");
ofstream fout("triplete.out");
const int nmax = 4100, mmax = 66000, b = 30;
int n, m;
long long mat[nmax][200];
pair <int, int> edge[mmax];
int main(){
fin >> n >> m;
for (int i = 1; i <= m; ++i){
int x, y;
fin >> x >> y;
edge[i] = {x, y};
mat[x][(y - 1) / b] |= (1LL << ((y - 1) % b));
mat[y][(x - 1) / b] |= (1LL << ((x - 1) % b));
}
long long answer = 0;
for (int i = 1; i <= m; ++i){
int x = edge[i].first, y = edge[i].second;
for (int j = 0; j <= n / b + 1; ++j){
long long value = mat[x][j] & mat[y][j];
answer = 1LL * answer + __builtin_popcount(value);
}
}
fout << answer / 3 << "\n";
fin.close();
fout.close();
return 0;
}