Pagini recente » Cod sursa (job #148893) | Cod sursa (job #884864) | Cod sursa (job #1936143) | Cod sursa (job #2869948) | Cod sursa (job #151857)
Cod sursa(job #151857)
#include<stdio.h>
#define N 4097
int n,m,sol;
int a[N][N/8+1];
struct vec{
int x,y;
}v[65537];
int p2[8]={1,2,4,8,16,32,64,128};
void read()
{
int i;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d",&v[i].x,&v[i].y);
a[v[i].x][v[i].y>>3]|=p2[(v[i].y-1)&7];
a[v[i].y][v[i].x>>3]|=p2[(v[i].x-1)&7];
}
}
void afis()
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=0;j<=n/8;j++)
for(int k=0;k<8;k++)
if(a[i][j]&p2[k])
printf("1 ");
else
printf("0 ");
printf("\n");
}
}
void solve()
{
int i,j,x,y,z,nr=0;
for(i=1;i<=m;i++)
{
x=v[i].x;
y=v[i].y;
for(j=0;j<=n/8;j++)
{
z=a[x][j]&a[y][j];
while(z)
{
nr++;
z&=(z-1);
}
}
}
printf("%d\n",nr/3);
}
int main()
{
freopen("triplete.in","r",stdin);
freopen("triplete.out","w",stdout);
read();
solve();
//afis();
return 0;
}