Cod sursa(job #1617461)

Utilizator LucianTLucian Trepteanu LucianT Data 27 februarie 2016 14:05:47
Problema Triplete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <bits/stdc++.h>
#define maxN 65537
#define maxM 4097
using namespace std;
int a[maxM][maxM/32], v[maxN], w[maxN];
int n, m, i, j, sol;
int cnt(int x)
{
    int s = 0;
    while(x)
        s++, x = x&(x-1);
    return s;
}
int main()
{
    freopen("triplete.in", "r", stdin);
    freopen("triplete.out", "w", stdout);
    scanf("%d %d", &n, &m);
    for(i = 1; i <= m; i++)
    {
        scanf("%d %d", &v[i], &w[i]);
        if(v[i] > w[i]) swap(v[i], w[i]);
        a[v[i]][w[i]/32] = a[v[i]][w[i]/32] + (1<<(w[i]%32));
    }
    int aux = n/32;
    for(i = 1; i <= m; i++)
        for(j = 0; j <= aux; j++)
            sol += cnt(a[v[i]][j] & a[w[i]][j]);
    printf("%d", sol);
    return 0;
}