Cod sursa(job #1933919)

Utilizator 1475369147896537415369Andrei Udriste 1475369147896537415369 Data 20 martie 2017 23:50:37
Problema Triplete Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <cstdio>
#include <list>
using namespace std;

list<int> adj[4097];
int vertices, edges, answer;
int u, v, visited[4097];

void BFS(int node){

    visited[node] = node + 1;
    list<int>::iterator i, j;

    for(i = adj[node].begin(); i != adj[node].end(); i++){
        visited[*i] = node + 1;
    }

    for(i = adj[node].begin(); i != adj[node].end(); i++){
        for(j = adj[*i].begin(); j != adj[*i].end(); j++){
            if(visited[*j] == node + 1 && *j != node){
                ++answer;
            }
        }
    }
}

int main(){

    freopen("triplete.in", "r", stdin);
    freopen("triplete.out", "w", stdout);

    scanf("%d %d", &vertices, &edges);

    for(int i = 1; i <= edges; i++){
        scanf("%d %d", &u, &v);

        adj[u].push_back(v);
        adj[v].push_back(u);
    }

    for(int node = 1; node <= vertices; node++){
        BFS(node);
    }

    printf("%d", answer / 6);

    return 0;
}