Pagini recente » Cod sursa (job #567952) | Cod sursa (job #2690879) | Cod sursa (job #2703195) | Cod sursa (job #3233209) | Cod sursa (job #1482658)
#include<fstream>
#define x first
#define y second
using namespace std;
int n, m, i, nr, j, nr1, x;
short a[4100][4100 / 16 + 1], v[(1 << 16) + 2];
pair<int, int> p[66000];
ifstream fin("triplete.in");
ofstream fout("triplete.out");
int main(){
fin>> n >> m;
for(i = 1; i <= m; i++){
fin>> p[i].x >> p[i].second;
p[i].x--;
p[i].y--;
if(p[i].x > p[i].y){
swap(p[i].x, p[i].y);
}
a[p[i].x][p[i].y / 16] += (1 << (p[i].y % 16));
// a[p[i].y][p[i].x / 16] += (1 << (p[i].x % 16));
}
for(i = 1; i <= (1 << 16) - 1; i++){
v[i] = v[i / 2] + i % 2;
}
for(i = 1; i <= m; i++){
nr1 = 0;
for(j = 0; j <= n / 16 + 1; j++){
x = a[p[i].x][j] & a[p[i].y][j];
nr1 += v[x];
}
nr += nr1;
}
fout<< nr <<"\n";
return 0;
}