Sum of dependencies in a graph (original) (raw)
Last Updated : 13 Sep, 2023
Given a directed and connected graph with n nodes. If there is an edge from u to v then u depends on v. Our task was to find out the sum of dependencies for every node.

Example:
For the graph in diagram, A depends on C and D i.e. 2 B depends on C i.e. 1 D depends on C i.e. 1 And C depends on none. Hence answer -> 0 + 1 + 1 + 2 = 4
Asked in : Flipkart Interview
Idea is to check adjacency list and find how many edges are there from each vertex and return the total number of edges.
Implementation:
C++ `
// C++ program to find the sum of dependencies #include <bits/stdc++.h> using namespace std;
// To add an edge void addEdge(vector adj[], int u,int v) { adj[u].push_back(v); }
// find the sum of all dependencies int findSum(vector adj[], int V) { int sum = 0;
// just find the size at each vector's index
for (int u = 0; u < V; u++)
sum += adj[u].size();
return sum;}
// Driver code int main() { int V = 4; vectoradj[V]; addEdge(adj, 0, 2); addEdge(adj, 0, 3); addEdge(adj, 1, 3); addEdge(adj, 2, 3);
cout << "Sum of dependencies is "
<< findSum(adj, V);
return 0;}
Java
// Java program to find the sum of dependencies
import java.util.Vector;
class Test { // To add an edge static void addEdge(Vector adj[], int u,int v) { adj[u].addElement((v)); }
// find the sum of all dependencies
static int findSum(Vector<Integer> adj[], int V)
{
int sum = 0;
// just find the size at each vector's index
for (int u = 0; u < V; u++)
sum += adj[u].size();
return sum;
}
// Driver method
public static void main(String[] args)
{
int V = 4;
@SuppressWarnings("unchecked")
Vector<Integer> adj[] = new Vector[V];
for (int i = 0; i < adj.length; i++) {
adj[i] = new Vector<>();
}
addEdge(adj, 0, 2);
addEdge(adj, 0, 3);
addEdge(adj, 1, 3);
addEdge(adj, 2, 3);
System.out.println("Sum of dependencies is " +
findSum(adj, V));
}} // This code is contributed by Gaurav Miglani
Python3
Python3 program to find the sum
of dependencies
To add an edge
def addEdge(adj, u, v):
adj[u].append(v)Find the sum of all dependencies
def findSum(adj, V):
sum = 0
# Just find the size at each
# vector's index
for u in range(V):
sum += len(adj[u])
return sumDriver code
if name=='main':
V = 4
adj = [[] for i in range(V)]
addEdge(adj, 0, 2)
addEdge(adj, 0, 3)
addEdge(adj, 1, 3)
addEdge(adj, 2, 3)
print("Sum of dependencies is",
findSum(adj, V))This code is contributed by rutvik_56
C#
// C# program to find the sum of dependencies using System; using System.Collections;
class GFG{
// To add an edge static void addEdge(ArrayList []adj, int u, int v) { adj[u].Add(v); }
// Find the sum of all dependencies static int findSum(ArrayList []adj, int V) { int sum = 0;
// Just find the size at each
// vector's index
for(int u = 0; u < V; u++)
sum += adj[u].Count;
return sum;}
// Driver code public static void Main(string[] args) { int V = 4;
ArrayList []adj = new ArrayList[V];
for(int i = 0; i < V; i++)
{
adj[i] = new ArrayList();
}
addEdge(adj, 0, 2);
addEdge(adj, 0, 3);
addEdge(adj, 1, 3);
addEdge(adj, 2, 3);
Console.Write("Sum of dependencies is " +
findSum(adj, V));} }
// This code is contributed by pratham76
` JavaScript ``
let V = 4; let adj = new Array(V).fill(null).map(() => []);
addEdge(adj, 0, 2); addEdge(adj, 0, 3); addEdge(adj, 1, 3); addEdge(adj, 2, 3);
console.log(Sum of dependencies is ${findSum(adj, V)});
function addEdge(adj, u, v) { adj[u].push(v); }
function findSum(adj, V) { let sum = 0;
// just find the size at each vector's index
for (let u = 0; u < V; u++) {
sum += adj[u].length;
}
return sum;} // this code is contributed by devendra
``
Output
Sum of dependencies is 4
Time complexity: O(V) where V is number of vertices in graph.