Let GV E be an unweighted undirected graph Its corresponding
Solution
#include <stdio.h>
 #include <stdlib.h>
 void main()
 {
 int option;
 do
 {    
 printf(\"\  A Program to represent a Graph by using an \");
    printf(\"Adjacency Matrix method \  \");
    printf(\"\  1. Directed Graph \");
    printf(\"\  2. Un-Directed Graph \");
    printf(\"\  3. Exit \");
    printf(\"\ \  Select a proper option : \");
    scanf(\"%d\", &option);
    switch(option)
    {
 case 1 : dir_graph();
 break;
 case 2 : undir_graph();
 break;
 case 3 : exit(0);
    } // switch
 }while(1);
 }
 
 int dir_graph()
 {
 int adj_mat[50][50];
 int n;
 int in_deg, out_deg, i, j;
 printf(\"\  How Many Vertices ? : \");
 scanf(\"%d\", &n);
 read_graph(adj_mat, n);
 printf(\"\  Vertex \\t In_Degree \\t Out_Degree \\t Total_Degree \");
 for (i = 1; i <= n ; i++ )
 {
 in_deg = out_deg = 0;
    for ( j = 1 ; j <= n ; j++ )
    {
 if ( adj_mat[j][i] == 1 )
 in_deg++;
    }
 for ( j = 1 ; j <= n ; j++ )
 if (adj_mat[i][j] == 1 )
 out_deg++;
 printf(\"\ \  %5d\\t\\t\\t%d\\t\\t%d\\t\\t%d\ \ \",i,in_deg,out_deg,in_deg+out_deg);
  }
 return;
 }
 
 int undir_graph()
 {
 int adj_mat[50][50];
 int deg, i, j, n;
 printf(\"\  How Many Vertices ? : \");
 scanf(\"%d\", &n);
 read_graph(adj_mat, n);
 printf(\"\  Vertex \\t Degree \");
 for ( i = 1 ; i <= n ; i++ )
 {
 deg = 0;
 for ( j = 1 ; j <= n ; j++ )
 if ( adj_mat[i][j] == 1)
 deg++;
 printf(\"\ \  %5d \\t\\t %d\ \ \", i, deg);
 }
 return;
 }
 
 int read_graph ( int adj_mat[50][50], int n )
 {
 int i, j;
 char reply;
 for ( i = 1 ; i <= n ; i++ )
 {
 for ( j = 1 ; j <= n ; j++ )
 {
 if ( i == j )
 {
 adj_mat[i][j] = 0;
        continue;
 }
 printf(\"\  Vertices %d & %d are Adjacent ? (Y/N) :\",i,j);
 scanf(\"%c\", &reply);
 if ( reply == \'y\' || reply == \'Y\' )
 adj_mat[i][j] = 1;
 else
 adj_mat[i][j] = 0;
    }
 }
 return;
 }


