Cod sursa(job #529754)

Utilizator nautilusCohal Alexandru nautilus Data 5 februarie 2011 21:36:50
Problema Triplete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream>
#include<bitset>
#define dmax 66000
#define dmax2 4100
using namespace std;

typedef struct muchie
{
 int x,y;
} muchie;


int n,m;
muchie mu[dmax];
bitset <dmax2> a[dmax2],nr;
long long numar;


void citire()
{
 int i;
	
 ifstream fin("triplete.in");
 
 fin>>n>>m;
 for (i=1; i<=m; i++)
	 {
	  fin>>mu[i].x>>mu[i].y;
	  
	  a[mu[i].x][mu[i].y] = 1;
	  a[mu[i].y][mu[i].x] = 1;
	 }
 
 fin.close();
}


void solve()
{
 int i;
	
 for (i=1; i<=m; i++) /*iau fiecare muchie*/
	 {
	  nr = a[mu[i].x] & a[mu[i].y]; 
	  /* & logic -> nr are 1 pe o pozitie daca si numai daca a[mu[i].x] si a[mu[i].y] au si ele 1 pe aceeasi pozitie */
	  numar += nr.count();
	  /* .count() transforma numarul nr din baza 2 in baza 10 */
	 } 
}


void afisare()
{
 ofstream fout("triplete.out");
 
 fout<<numar / 3;
 
 fout.close();
}


int main()
{
	
 citire();
 solve();
 afisare();
	
 return 0;
}