diff --git a/(p,t)_sparsification/graph.cpp b/(p,t)_sparsification/graph.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5f9be2a24cc4e27f5f18f0d6cee002cca19a58d9 --- /dev/null +++ b/(p,t)_sparsification/graph.cpp @@ -0,0 +1,65 @@ +// +// Created by Kiouche on 1/20/2020. +// + +#include <unordered_map> +#include <unordered_set> +#include <vector> +#include "graph.h" +#include "hash.h" + + + + + +namespace std { + + vector<edge> get_edges(graph &g,bool directed){ + vector<edge> edges; + unordered_set<edge> s_edges; + for (auto & s : g){ + for (auto & d : s.second ){ + edge e,r_e; + e.first = s.first; + e.second = d; + r_e.first = d; + r_e.second = s.first; + if(!directed) { + if (s_edges.find(e) == s_edges.end()) { + edges.push_back(e); + } + } + else edges.push_back(e); + s_edges.insert(e); + s_edges.insert(r_e); + } + } + return edges; + } + + bool is_it_undirected(graph &g){ + for (auto s : g){ + for (auto d : s.second ){ + if ( g[d].find(s.first)==g[d].end()) return false; + } + } + return true; + } + + unordered_set<uint32_t > intersection(unordered_set<uint32_t> &s1,unordered_set<uint32_t> &s2){ + unordered_set<uint32_t > intersection; + if (s1.size()< s2.size()){ + for (auto n :s1){ + if (s2.find(n)!=s2.end()) intersection.insert(n); + } + } + else{ + for (auto n :s2){ + if (s1.find(n)!=s1.end()) intersection.insert(n); + } + } + return intersection; + } + + +} \ No newline at end of file