Create graph using adjacency matrix method

A graph G,consists of two sets V and E. V is a finite non-empty set of vertices.E is a set of pairs of vertices,these pairs are called as edges V(G) and E(G) will represent the sets of vertices and edges of graph G.

Undirected graph - It is a graph with V vertices and E edges where E edges are undirected.In undirected graph, each edge which is present between the vertices Vi and Vj,is represented by using a pair of round vertices (Vi,Vj).

Directed graph - It is a graph with V vertices and E edges where E edges are directed.In directed graph,if Vi and Vj nodes having an edge.than it is represented by a pair of triangular brackets Vi,Vj.

//... A Program to represent a Graph by using an Adjacency Matrix method

# include < stdio.h >
# include < conio.h >

void main()
{
   int option;
   clrscr();
   do
   {		printf("\n A Program to represent a Graph by using an ");
		printf("Adjacency Matrix method \n ");
		printf("\n 1. Directed Graph ");
		printf("\n 2. Un-Directed Graph ");
		printf("\n 3. Exit ");
		printf("\n\n 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);
} // main

int dir_graph()
{
	int adj_mat[50][50];
	int n;
	int in_deg, out_deg, i, j;

	printf("\n How Many Vertices ? : ");
	scanf("%d", &n);

	read_graph (adj_mat, n);
	printf("\n 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
		for ( j = 1 ; j <= n ; j++ )
			if (adj_mat[i][j] == 1 )
				out_deg++;
		printf("\n\n %5d\t\t\t%d\t\t%d\t\t%d\n\n",i,in_deg,out_deg,in_deg+out_deg);
	} // for
	return;
} // dir_graph

int undir_graph()
{
	int adj_mat[50][50];
	int deg, i, j, n;

	printf("\n How Many Vertices ? : ");
	scanf("%d", &n);

	read_graph(adj_mat, n);
	printf("\n 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("\n\n %5d \t\t %d\n\n", i, deg);
	} // for
	return;
} // undir_graph

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;
			} // if
			printf("\n Vertices %d & %d are Adjacent ? (Y/N) :",i,j);
			flushall();
			scanf("%c", &reply);
			if ( reply == 'y' || reply == 'Y' )
				adj_mat[i][j] = 1;
			else
				adj_mat[i][j] = 0;
		} // for
	} // for
	return;
} // read_graph