Pagini recente » Cod sursa (job #2691885) | Cod sursa (job #1295440) | Cod sursa (job #41292) | Cod sursa (job #2669006) | Cod sursa (job #1145556)
#include<stdio.h>
#include<vector>
using namespace std;
#define nmax 4100
#define pozmax nmax/30
int n, m, i, a, b, aux, p2[30], c[nmax], r[nmax], poz, conf, rez;
int pr[nmax][pozmax];
vector <int> ma[nmax];
vector <int> ::iterator it;
void citire()
{
scanf("%ld %ld",&n,&m);
p2[0]=1;
for (i=1;i<=n;i++)
{
c[i]=i/30; r[i]=i%30;
if (i<=30)
p2[i]=p2[i-1]<<1;
}
for (i=1;i<=m;i++)
{
scanf("%ld %ld",&a,&b);
if (a>b)
{ aux=a; a=b; b=aux;}
ma[a].push_back(b); pr[a][c[b]]+=p2[r[b]];
}
}
void rezolvare()
{
for (i=1;i<=n;i++)
for (it=ma[i].begin();it!=ma[i].end();it++)
for(poz=0;poz<=c[n];poz++)
{
conf=pr[i][poz]&pr[*it][poz];
while (conf)
{
conf=conf&(conf-1);
rez++;
}
}
}
int main()
{
freopen("triplete.in","r",stdin);
freopen("triplete.out","w",stdout);
citire();
rezolvare();
printf("%ld",rez);
return 0;
}