Pagini recente » Cod sursa (job #1882365) | Cod sursa (job #2569672) | Cod sursa (job #2121676) | Cod sursa (job #228166) | Cod sursa (job #324896)
Cod sursa(job #324896)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define in "triplete.in"
#define out "triplete.out"
#define NMAX 5000
#define BMAX 513
#define MASK (0x80)
#define MMAX 65537
#define TMAX 257
typedef struct set {
char set[BMAX];
} Set;
Set S[NMAX];
int N, M, ind, nrsol;
int cnt[TMAX];
struct muchie {
int v1, v2;
} g[NMAX];
void Add( int i, int j )
{
int C, R;
C = (j>>3);
R = ( j - (C<<3) );
unsigned char a = MASK;
a >>= R;
S[i].set[C] |= a;
}
int main ( void )
{
freopen ( in, "r", stdin );
freopen ( out, "w", stdout );
int i, j;
for ( i = 1; i <= 300; ++i )
cnt[i] = cnt[i>>1] + (i&1);
scanf ( "%d%d", &N, &M );
for ( ; M > 0; --M )
{
scanf ( "%d%d",&i,&j );
Add ( i, j );
Add ( j, i );
g[++ind].v1 = i; g[ind].v2 = j;
}
unsigned char a;
for ( i = 1; i <= ind; ++i )
{
for ( j = 0; j < 513; ++j )
{
a = (S[g[i].v1].set[j]) & ( S[g[i].v2].set[j] );
//nrsol += cnt[a];
}
}
printf ( "%d\n", nrsol/3 );
return 0;
}