Cod sursa(job #7177)

Utilizator sandyxpSanduleac Dan sandyxp Data 21 ianuarie 2007 12:57:52
Problema Triplete Scor 20
Compilator cpp Status done
Runda preONI 2007, Runda 1, Clasa a 10-a Marime 0.81 kb
#include <cstdio>
#include <cstring>

#define FIN "triplete.in"
#define FOUT "triplete.out"
#define MAXN 4096
#define MAXM 65536

typedef unsigned long ul;
typedef ul graf[MAXN][MAXN];

int n, m;
graf G;
int M[2][MAXM];

void citire()
{
    freopen(FIN, "r", stdin);
    freopen(FOUT,"w",stdout);
    scanf("%d %d", &n, &m);
}

void rez()
{
    int i, j, x, y;
    ul trip = 0;

    for (i=0; i<m; ++i) {
        scanf("%d %d", &x, &y);
        M[0][i] = x; M[1][i] = y;
        G[x][y] = G[y][x] = 1;
    }
    for (i=0; i<m; ++i)
    {
        for (j=1; j<=n; ++j)
            if (j!=M[0][i] && j!=M[1][i] && G[j][M[0][i]] && G[j][M[1][i]]) {
                trip++;
            }
        G[M[0][i]][M[1][i]] = G[M[1][i]][M[0][i]] = 0;
    }
    printf("%lu\n", trip);
}

int main()
{
    citire();
    rez();
    return 0;
}