Cod sursa(job #1308380)

Utilizator radu_cebotariRadu Cebotari radu_cebotari Data 4 ianuarie 2015 00:03:44
Problema Triplete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
using namespace std;
ifstream in("triplete.in");
ofstream out("triplete.out");
const int NMAX = 4096;

int n,m;
long long v[NMAX + 10][65];

int biti(long long n)
{
    int rez = 0;
    while(n){
        n = n&(n-1);
        ++rez;
    }
    return rez;
}
int main()
{

    in>>n>>m;
    int a,b,sol = 0,p = 0;
    for(int i = 1 ; i <= m ; i++){
        in>>a>>b;
        a--;
        b--;
        v[a][b>>6] |= 1LL << (b%64);
        v[b][a>>6] |= 1LL << (a%64);
    }

    for(int i = 0 ; i < n ; i++)
        for(int j = i+1 ; j < n ; j++){
            if((v[i][j>>6]&(1LL << (j%64))) == 0)
            continue;
            for(int k = 0 ; k < 64 ; k++)
                    sol += biti(v[i][k]&v[j][k]);
        }
    out<<sol/3;
    return 0;
}