Cod sursa(job #1575599)

Utilizator emanuel_rRamneantu Emanuel emanuel_r Data 21 ianuarie 2016 17:51:33
Problema Triplete Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream>
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<bitset>
using namespace std;

ofstream g("triplete.out");

bitset <4100> G[4100];
int X[66000], Y[66000];
char Buffer[1000000];
int n, m, sol, pos;

void citeste(int & nr)
{
    nr = 0;
    while(Buffer[pos] < '0' || Buffer[pos] > '9')
        pos++;
    while(Buffer[pos] >= '0' && Buffer[pos] <= '9')
        nr = nr*10 + Buffer[pos++] - '0';
}

void citire()
{
    freopen("triplete.in", "r", stdin);
    fread(Buffer, 1, 1000000, stdin);

    int i;
    citeste(n);citeste(m);
    for(i=1; i<=m; i++){
        citeste(X[i]);citeste(Y[i]);
        G[X[i]].set(Y[i]);
        G[Y[i]].set(X[i]);
    }
}

void rez()
{
    bitset <4100> vec;
    for(int i=1; i<=m; i++){
        vec = G[X[i]] & G[Y[i]];
        sol += vec.count();
    }
    sol /= 3;
    g<<sol<<"\n";
}

int main()
{
    citire();
    rez();
    return 0;
}