Given a graph G(V,E) as an adjacency matrix representation and a vertex, find the degree of the vertex v in the graph.
Examples :
0-----1
|\ |
| \ |
| \|
2-----3
Input : ver = 0
Output : 3
Input : ver = 1
Output : 2
Algorithm:
1. Create the graphs adjacency matrix from src to des
2. For the given vertex then check if
a path from this vertices to other exists then
increment the degree.
3. Return degree
Below is the implementation of the approach.
C++
#include<iostream>
using namespace std;
struct graph
{
int v;
int e;
int **dir;
};
int findDegree( struct graph *G, int ver)
{
int degree = 0;
for ( int i=0; i<G->v; i++)
if (G-> dir[ver][i] == 1)
degree++;
if (G-> dir[ver][ver] == 1)
degree++;
return degree;
}
struct graph *createGraph( int v, int e)
{
struct graph *G = new graph;
G->v = v;
G->e = e;
G->dir = new int *[v];
for ( int i = 0;i < v;i++)
G->dir[i] = new int [v];
G->dir[0][1]=1;
G->dir[0][2]=1;
G->dir[0][3]=1;
G->dir[1][0]=1;
G->dir[1][3]=1;
G->dir[2][0]=1;
G->dir[2][3]=1;
G->dir[3][0]=1;
G->dir[3][1]=1;
G->dir[3][2]=1;
return G;
}
int main()
{
int vertices = 4;
int edges = 5;
struct graph *G = createGraph(vertices, edges);
int ver = 0;
int degree = findDegree(G, ver);
cout << degree << "\n" ;
return 0;
}
|
Java
class DegreeOfVertex
{
static class Graph
{
int v, e;
int [][] dir;
Graph( int v, int e) {
this .v = v;
this .e = e;
dir = new int [v][];
for ( int i = 0 ; i < v; i++)
dir[i] = new int [v];
}
}
static Graph createGraph( int v, int e)
{
Graph G = new Graph(v, e);
G.dir[ 0 ][ 1 ] = 1 ;
G.dir[ 0 ][ 2 ] = 1 ;
G.dir[ 0 ][ 3 ] = 1 ;
G.dir[ 1 ][ 0 ] = 1 ;
G.dir[ 1 ][ 3 ] = 1 ;
G.dir[ 2 ][ 0 ] = 1 ;
G.dir[ 2 ][ 3 ] = 1 ;
G.dir[ 3 ][ 0 ] = 1 ;
G.dir[ 3 ][ 1 ] = 1 ;
G.dir[ 3 ][ 2 ] = 1 ;
return G;
}
static int findDegree(Graph G, int ver)
{
int degree = 0 ;
for ( int i = 0 ; i < G.v; i++) {
if (G.dir[ver][i] == 1 )
degree++;
}
if (G.dir[ver][ver] == 1 ) degree++;
return degree;
}
public static void main(String[] args)
{
int vertices = 4 ;
int edges = 5 ;
Graph G = createGraph(vertices, edges);
int ver = 0 ;
int degree = findDegree(G, ver);
System.out.println(degree);
}
}
|
Python3
class Graph:
v = None
e = None
diri = []
def __init__( self , v, e):
self .v = v
self .e = e
self .diri = [[ 0 for i in range (v)]
for j in range (v)]
def createGraph(v, e):
G = Graph(v, e)
G.diri[ 0 ][ 1 ] = 1
G.diri[ 0 ][ 2 ] = 1
G.diri[ 0 ][ 3 ] = 1
G.diri[ 1 ][ 0 ] = 1
G.diri[ 1 ][ 3 ] = 1
G.diri[ 2 ][ 0 ] = 1
G.diri[ 2 ][ 3 ] = 1
G.diri[ 3 ][ 0 ] = 1
G.diri[ 3 ][ 1 ] = 1
G.diri[ 3 ][ 2 ] = 1
return G
def findDegree(G, ver):
degree = 0
for i in range (G.v):
if G.diri[ver][i] = = 1 :
degree + = 1
if G.diri[ver][ver] = = 1 :
degree + = 1
return degree
if __name__ = = "__main__" :
vertices = 4
edges = 5
G = createGraph(vertices, edges)
ver = 0
degree = findDegree(G, ver)
print (degree)
|
C#
using System;
class GFG
{
public class Graph
{
public int v, e;
public int [,] dir;
public Graph( int v, int e)
{
this .v = v;
this .e = e;
dir = new int [v,v];
}
}
static Graph createGraph( int v, int e)
{
Graph G = new Graph(v, e);
G.dir[0, 1] = 1;
G.dir[0, 2] = 1;
G.dir[0, 3] = 1;
G.dir[1, 0] = 1;
G.dir[1, 3] = 1;
G.dir[2, 0] = 1;
G.dir[2, 3] = 1;
G.dir[3, 0] = 1;
G.dir[3, 1] = 1;
G.dir[3, 2] = 1;
return G;
}
static int findDegree(Graph G, int ver)
{
int degree = 0;
for ( int i = 0; i < G.v; i++)
{
if (G.dir[ver,i] == 1)
degree++;
}
return degree;
}
public static void Main(String[] args)
{
int vertices = 4;
int edges = 5;
Graph G = createGraph(vertices, edges);
int ver = 0;
int degree = findDegree(G, ver);
Console.WriteLine(degree);
}
}
|
Javascript
<script>
class Graph
{
constructor(v,e)
{
this .v = v;
this .e = e;
this .dir = new Array(v);
for (let i = 0; i < v; i++)
this .dir[i] = new Array(v);
}
}
function createGraph(v,e)
{
let G = new Graph(v, e);
G.dir[0][1] = 1;
G.dir[0][2] = 1;
G.dir[0][3] = 1;
G.dir[1][0] = 1;
G.dir[1][3] = 1;
G.dir[2][0] = 1;
G.dir[2][3] = 1;
G.dir[3][0] = 1;
G.dir[3][1] = 1;
G.dir[3][2] = 1;
return G;
}
function findDegree(G, ver)
{
let degree = 0;
for (let i = 0; i < G.v; i++)
{
if (G.dir[ver][i] == 1)
degree++;
}
if (G.dir[ver][ver] == 1)
degree++;
return degree;
}
let vertices = 4;
let edges = 5;
let G = createGraph(vertices, edges);
let ver = 0;
let degree = findDegree(G, ver);
document.write(degree + "<br>" );
</script>
|