Given a directed graph represented by its adjacency list adj[][], determine the in-degree (number of incoming edges) and out-degree (number of outgoing edges) for every vertex in the graph.
The main idea is to calculate the in-degree and out-degree of each vertex by traversing the adjacency list. The out-degree of a vertex i is equal to the number of vertices present in its adjacency list adj[i], and for the in-degree, we increment the count for each vertex j that has an incoming edge from the current vertex i by one.
C++
//Driver Code Starts#include<iostream>#include<vector>usingnamespacestd;//Driver Code Endsvector<vector<int>>findInOutDegree(vector<vector<int>>&adj){intn=adj.size();vector<int>inDegree(n,0),outDegree(n,0);// Traverse adjacency listfor(inti=0;i<n;i++){// Out-degree = number of vertices this vertex points tooutDegree[i]=adj[i].size();// For each connected vertex, increment its in-degreefor(intv:adj[i])inDegree[v]++;}// Store in-degree and out-degree together for each vertexvector<vector<int>>result(n,vector<int>(2));for(inti=0;i<n;i++)result[i]={inDegree[i],outDegree[i]};returnresult;}//Driver Code Startsintmain(){vector<vector<int>>adj={{1},{},{1,6},{2},{3,2},{4,6},{}};vector<vector<int>>degrees=findInOutDegree(adj);cout<<"VertexInOut";for(inti=0;i<adj.size();i++)cout<<i<<""<<degrees[i][0]<<""<<degrees[i][1]<<"";return0;}//Driver Code Ends
Java
//Driver Code Startsimportjava.util.ArrayList;publicclassGFG{//Driver Code EndspublicstaticArrayList<ArrayList<Integer>>findInOutDegree(ArrayList<ArrayList<Integer>>adj){intV=adj.size();int[]inDegree=newint[V];int[]outDegree=newint[V];// Traverse adjacency listfor(inti=0;i<V;i++){// Out-degree = number of vertices this vertex points tooutDegree[i]=adj.get(i).size();// For each connected vertex, increment its in-degreefor(intv:adj.get(i))inDegree[v]++;}// Store in-degree and out-degree together for each vertexArrayList<ArrayList<Integer>>result=newArrayList<>();for(inti=0;i<V;i++){ArrayList<Integer>temp=newArrayList<>();temp.add(inDegree[i]);temp.add(outDegree[i]);result.add(temp);}returnresult;}//Driver Code Starts// Function to add a directed edge from u to vpublicstaticvoidaddEdge(ArrayList<ArrayList<Integer>>adj,intu,intv){adj.get(u).add(v);}publicstaticvoidmain(String[]args){intV=7;ArrayList<ArrayList<Integer>>adj=newArrayList<>();for(inti=0;i<V;i++)adj.add(newArrayList<>());addEdge(adj,0,1);addEdge(adj,2,1);addEdge(adj,2,6);addEdge(adj,3,2);addEdge(adj,4,2);addEdge(adj,4,3);addEdge(adj,5,4);addEdge(adj,5,6);ArrayList<ArrayList<Integer>>degrees=findInOutDegree(adj);System.out.println("Vertex In Out");for(inti=0;i<V;i++)System.out.println(i+" "+degrees.get(i).get(0)+" "+degrees.get(i).get(1));}}//Driver Code Ends
Python
deffindInOutDegree(adj):n=len(adj)inDegree=[0]*noutDegree=[0]*n# Traverse adjacency listforiinrange(n):# Out-degree = number of vertices this vertex points tooutDegree[i]=len(adj[i])# For each connected vertex, increment its in-degreeforvinadj[i]:inDegree[v]+=1# Store in-degree and out-degree together for each vertexresult=[[inDegree[i],outDegree[i]]foriinrange(n)]returnresult#Driver Code Startsif__name__=="__main__":adj=[[1],[],[1,6],[2],[3,2],[4,6],[]]degrees=findInOutDegree(adj)print("VertexInOut")foriinrange(len(adj)):print(f"{i}{degrees[i][0]}{degrees[i][1]}")#Driver Code Ends
C#
//Driver Code StartsusingSystem;usingSystem.Collections.Generic;classGFG{//Driver Code EndsstaticList<List<int>>findInOutDegree(List<List<int>>adj){intn=adj.Count;int[]inDegree=newint[n];int[]outDegree=newint[n];// Traverse adjacency listfor(inti=0;i<n;i++){// Out-degree = number of vertices this vertex points tooutDegree[i]=adj[i].Count;// For each connected vertex, increment its in-degreeforeach(intvinadj[i])inDegree[v]++;}// Store in-degree and out-degree together for each vertexList<List<int>>result=newList<List<int>>();for(inti=0;i<n;i++){result.Add(newList<int>{inDegree[i],outDegree[i]});}returnresult;}//Driver Code Starts// Function to add a directed edge from u to vstaticvoidaddEdge(List<List<int>>adj,intu,intv){adj[u].Add(v);}staticvoidMain(){intV=7;List<List<int>>adj=newList<List<int>>();for(inti=0;i<V;i++)adj.Add(newList<int>());addEdge(adj,0,1);addEdge(adj,2,1);addEdge(adj,2,6);addEdge(adj,3,2);addEdge(adj,4,2);addEdge(adj,4,3);addEdge(adj,5,4);addEdge(adj,5,6);List<List<int>>degrees=findInOutDegree(adj);Console.WriteLine("Vertex In Out");for(inti=0;i<V;i++)Console.WriteLine($"{i} {degrees[i][0]} {degrees[i][1]}");}}//Driver Code Ends
JavaScript
functionfindInOutDegree(adj){constn=adj.length;constinDegree=newArray(n).fill(0);constoutDegree=newArray(n).fill(0);// Traverse adjacency listfor(leti=0;i<n;i++){// Out-degree = number of vertices this vertex points tooutDegree[i]=adj[i].length;// For each connected vertex, increment its in-degreefor(letvofadj[i])inDegree[v]++;}// Store in-degree and out-degree together for each vertexconstresult=[];for(leti=0;i<n;i++)result.push([inDegree[i],outDegree[i]]);returnresult;}//Driver Code//Driver Code Startsconstadj=[[1],[],[1,6],[2],[3,2],[4,6],[]];constdegrees=findInOutDegree(adj);console.log("Vertex In Out");for(leti=0;i<adj.length;i++)console.log(`${i}${degrees[i][0]}${degrees[i][1]}`);//Driver Code Ends