Cod sursa(job #51312)

Utilizator cos_minBondane Cosmin cos_min Data 11 aprilie 2007 10:20:27
Problema Triplete Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <stdio.h>
#include <vector>
#include <set>
#include <iterator>
#include <string>
using namespace std;

#define in "triplete.in"
#define out "triplete.out"
#define dim 4096
#define dr 65536


/*typedef struct nod {
        int vf;
        nod *next;
} *PNOD;

PNOD graph[dim];*/

vector< vector<int> > V;

int arb[2][dr];
int n, m;
int sel[dim];

/*void Add(int i, int j)
{
     PNOD q = new nod;
     q->vf = i;
     q->next = graph[j];
     graph[j] = q;
}*/

int main()
{
    int x, y;
    int nr=0;
    freopen(in,"r",stdin);
    freopen(out,"w",stdout);
    scanf("%d%d", &n, &m);
    
    V.resize(n+1);
    
    for ( int i = 1; i <= m; i++ )
    {
        scanf("%d%d",&x,&y);
       // Add(x,y);
      //  Add(y,x);
        V[x].push_back(y);
        V[y].push_back(x);
        arb[0][i] = x;
        arb[1][i] = y;
    }
    
   // p.resize(n+1);
    
    for ( int i = 1; i <= m; i++ )
    {
      //  memset(sel,0,sizeof(sel[0])*(n+1));
        x = arb[0][i];
        y = arb[1][i];
        //for ( PNOD q = graph[x]; q; q=q->next ) sel[q->vf] = i;
        for ( int j = 0; j < V[x].size(); j++ ) sel[V[x][j]] = i;
        
       /* for ( PNOD q = graph[y]; q; q=q->next )
            if ( sel[q->vf] == i ) nr++;*/
         for ( int j = 0; j < V[y].size(); j++ )
             if ( sel[V[y][j]] == i ) nr++;
    }
    
    printf("%d",nr/3);
    
}