Pagini recente » Cod sursa (job #2361607) | Cod sursa (job #1905902) | Cod sursa (job #2147003) | Cod sursa (job #3293033) | Cod sursa (job #14499)
Cod sursa(job #14499)
#include <fstream>
using namespace std;
#define in "triplete.in"
#define out "triplete.out"
#define NMAX 4096
#define MMAX 65540
struct muchie {
int x;
int y;
} mu[MMAX];
typedef struct nod {
int vf;
nod*next;
} *PNOD, NOD;
PNOD L[NMAX];
int n,nod1,nod2;
typedef long int INT;
INT m, nrsol,prov;
FILE *fout = fopen( out, "w" );
void Add(int,int);
int main()
{
FILE *fin = fopen ( in, "r" );
INT i;
int x,y;
fscanf( fin, "%d%ld", &n, &m );
for ( i = 1; i <= m; ++i )
{
fscanf( fin, "%d%d", &x, &y);
mu[i].x = x;
mu[i].y = y;
Add(x,y);
Add(y,x);
}
//rezolvare
for ( i = 1; i <= m; ++i )
{
nod1 = mu[i].x;
nod2 = mu[i].y;
prov = 0;
for ( PNOD p = L[nod1]; p; p = p->next )
{
for ( PNOD q = L[nod2]; q; q = q->next )
{
if ( p->vf == q->vf )
{
prov++;
//fprintf(fout, "%d %d %d\n", nod1, nod2, p->vf );
}
}
}
nrsol += prov;
}
fprintf(fout, "%ld\n", nrsol / 3);
fclose ( fin );
fclose ( fout );
return 0;
}
void Add( int i, int j )
{
PNOD p = new NOD;
p->vf = j;
p->next = L[i];
L[i] = p;
}