Category: Algorithms

DSatur Algorithm for Graph Coloring

  #include #include #include #include using namespace std;  struct nodeInfo {    int sat;     int deg;     int vertex; };struct maxSat {    bool operator()(const nodeInfo& lhs,                    const nodeInfo& rhs) const    {                                        return tie(lhs.sat, lhs.deg, lhs.vertex)               > tie(rhs.sat, rhs.deg, rhs.vertex);    }};  class Graph {          int n;          vector adj;  public:        Graph(int numNodes)    {        n = numNodes;        adj.resize(n, vector());    }    ~Graph() { adj.clear(); }          void addEdge(int u, int v);              void DSatur();};  void Graph::addEdge(int u, int v){    adj[u].push_back(v);    adj[v].push_back(u);}  void Graph::DSatur(){    int u, i;    vector used(n, false);    vector c(n), […]

Continue Reading

Karatsuba Algorithm for fast Multiplication of Large Decimal Numbers represented as Strings

  #include using namespace std;  string findSum(string str1, string str2){            if (str1.length() > str2.length())        swap(str1, str2);          string str = “”;          int n1 = str1.length();    int n2 = str2.length();          reverse(str1.begin(), str1.end());    reverse(str2.begin(), str2.end());      int carry = 0;    for (int i = 0; i < n1; i++) {                          int sum            = ((str1[i] - '0')               + (str2[i] - '0')               + carry);        str.push_back(sum % 10 + '0');                  carry = sum / 10;    }          for (int i = n1; […]

Continue Reading

Implementation of Johnson’s algorithm for all-pairs shortest paths

import java.util.ArrayList;import java.util.Arrays;  public class Graph {    private static class Neighbour {        int destination;        int weight;          Neighbour(int destination, int weight)        {            this.destination = destination;            this.weight = weight;        }    }      private int vertices;    private final ArrayList        adjacencyList;                  public Graph(int vertices)    {        this.vertices = vertices;          adjacencyList = new ArrayList(vertices);        for (int i = 0; i < vertices; i++)            adjacencyList.add(new ArrayList());    }                  public Graph(int vertices, int[][] adjacencyMatrix)    {        this(vertices);          for (int i = 0; i < vertices; i++) {            for (int j = […]

Continue Reading

Indexed Priority Queue with Implementation

  #include using namespace std;  template   class indexed_priority_queue {          unordered_map m;          vector v;          long long numberOfElement;          Comparator comp;          long long capacity = LLONG_MAX;          long long int getValueIndex(T1 key)    {        if (m[key] == 0) {            cout

Continue Reading

Shortest Path Properties

Shortest Path PropertiesThe shortest path problem is the problem of finding a path between two vertices (or nodes) in a graph such that the sum of the weights of its constituent edges is minimized. The shortest path between any two nodes of the graph can be founded using many algorithms, such as Dijkstra’s algorithm, Bellman-Ford […]

Continue Reading

Minimize K to let Person A consume at least ceil(N/(M + 1)) candies based on given rules

  #include using namespace std;  bool check(int K, int n, int m,           vector arr,           int good_share){    int candies = n, taken = 0;      while (candies > 0) {                                  taken += min(K, candies);        candies -= min(K, candies);                  for (int j = 0; j < m; j++) {                                        int consume = (arr[j] * candies) / 100;                                        candies -= consume;        }    }                return (taken >= good_share);}  void minimumK(vector &arr, int N,              int M){              int good_share […]

Continue Reading

Test Case Generation | Set 6 (Random Unweighted Binary Tree)

  #include using namespace std;    vector generateBinaryTree(int n){                        vector options = { 0, 1, 2 };                        map mp;                queue q;            q.push(1);            vector v;                int count = 1;                mp[1] = 1;            while (!q.empty() or count < n) {                                            int front;                  if(!q.empty()) {                                                    front = q.front();                                                                q.pop();        }                                                          int numberOfChilds          = options[rand() % (options.size())];                            if (count >= n)            continue;                                        while (numberOfChilds–) {                                                                int child = rand() % n + 1;                                        while (mp[child]) {                child++;                if (child > n) {                    child = 1;                }            }                                        count++;                            mp[child] […]

Continue Reading

Implement Secure Hashing Algorithm – 512 ( SHA-512 ) as Functional Programming Paradigm

#include using namespace std;typedef unsigned long long int int64;  int64 Message[80];  const int64 Constants[80]    = { 0x428a2f98d728ae22, 0x7137449123ef65cd,        0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc,        0x3956c25bf348b538, 0x59f111f1b605d019,        0x923f82a4af194f9b, 0xab1c5ed5da6d8118,        0xd807aa98a3030242, 0x12835b0145706fbe,        0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2,        0x72be5d74f27b896f, 0x80deb1fe3b1696b1,        0x9bdc06a725c71235, 0xc19bf174cf692694,        0xe49b69c19ef14ad2, 0xefbe4786384f25e3,        0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65,        0x2de92c6f592b0275, 0x4a7484aa6ea6e483,        0x5cb0a9dcbd41fbd4, 0x76f988da831153b5,        0x983e5152ee66dfab, 0xa831c66d2db43210,        0xb00327c898fb213f, 0xbf597fc7beef0ee4,        0xc6e00bf33da88fc2, 0xd5a79147930aa725,        0x06ca6351e003826f, 0x142929670a0e6e70,        0x27b70a8546d22ffc, 0x2e1b21385c26c926,        0x4d2c6dfc5ac42aed, 0x53380d139d95b3df,        0x650a73548baf63de, 0x766a0abb3c77b2a8,        0x81c2c92e47edaee6, 0x92722c851482353b,        0xa2bfe8a14cf10364, 0xa81a664bbc423001,        0xc24b8b70d0f89791, 0xc76c51a30654be30,        0xd192e819d6ef5218, 0xd69906245565a910,        0xf40e35855771202a, 0x106aa07032bbd1b8,        0x19a4c116b8d2d0c8, 0x1e376c085141ab53,        0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8,        0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb,        0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3,        0x748f82ee5defb2fc, 0x78a5636f43172f60,        0x84c87814a1f0ab72, 0x8cc702081a6439ec,        0x90befffa23631e28, 0xa4506cebde82bde9,        0xbef9a3f7b2c67915, 0xc67178f2e372532b,        0xca273eceea26619c, 0xd186b8c721c0c207,        0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178,        0x06f067aa72176fba, 0x0a637dc5a2c898a6,        0x113f9804bef90dae, 0x1b710b35131c471b,        0x28db77f523047d84, 0x32caab7b40c72493,        0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c,        0x4cc5d4becb3e42b6, 0x597f299cfc657e2a,        0x5fcb6fab3ad6faec, 0x6c44198c4a475817 };  string […]

Continue Reading