#include<stdio.h>
#include<stdlib.h>
typedef struct graph {
int NoEdge;
int Vertices;
int** A;
}Graph;
void CreateGraph(Graph *g, int n , int noedge) {
int i, j;
g->NoEdge = noedge;
g->Vertices = n;
g->A = (int**)malloc(n*sizeof(int*));
for (i = 0; i < n;i++) {
g->A[i] = (int*)malloc(n*sizeof(int));
for (j = 0; j < n;j++) {
g->A[i][j] = noedge;
}
g->A[i][i] = 0;
}
}
void Add(Graph*g, int u,int v, int w) {
if (u < 0 || v < 0 || u > g->Vertices - 1 || v>g->Vertices - 1 || u == v || g->A[u][v] != g->NoEdge) {
printf("BadInput\n");
}
else {
g->A[u][v] = w;
}
}
void Delete(Graph *g, int u, int v) {
if (u < 0 || v < 0 || u > g->Vertices - 1 || v>g->Vertices - 1 || u == v || g->A[u][v] == g->NoEdge) {
printf("BadInput\n");
}
else {
g->A[u][v] = g->NoEdge;
printf("Delete Successfully\n");
}
}
void Exist(Graph* g, int u, int v) {
if (u < 0 || v < 0 || u > g->Vertices - 1 || v>g->Vertices - 1 || u == v || g->A[u][v] == g->NoEdge) {
printf("No Existance\n");
}
else {
printf("Element Exists!\n");
}
}
void PrintMatrix(Graph* g) {
int i,j;
for (i = 0; i < g->Vertices;i++) {
for (j = 0; j < g->Vertices;j++) {
printf("%-4d",g->A[i][j]);
}
printf("\n");
}
printf("***************\n");
}
void main() {
Graph* g;
g = (Graph*)malloc(sizeof(Graph));
CreateGraph(g, 4, -1);
PrintMatrix(g);
Add(g, 1, 0, 4);
Add(g, 1, 2, 5);
Add(g, 2, 3, 3);
Add(g, 3, 0, 1);
Add(g, 3, 1, 1);
Delete(g, 1, 0);
PrintMatrix(g);
}