IM HERE TO HELP YOU
DIL KHOL KAR COPY KAR MERE BACCHE
DIL KHOL KAR COPY KAR MERE BACCHE
#include
#define nvisited 0
#define visited 1
#define max 10
int nv;
int arr[max][max];
int state[max];
int queue[max], rear = -1, front = -1;
int isEmpty()
{
if(front == -1 || front > rear)
return 1;
else
return 0;
}
int isFull()
{
if(rear == max-1)
return 1;
else
return 0;
}
void insert(int data)
{
if(!isFull())
{
if(front == -1)
front = 0;
queue[++rear] = data;
}
}
int delete()
{
if(!isEmpty())
{
return queue[front++];
}
}
void bfs(int v)
{
int i;
insert(v);
printf("BFS sequence : \n");
while(!isEmpty())
{
v = delete();
if(state[v] == nvisited)
printf("%d \n", v);
state[v] = visited;
for(i = 1; i < nv; i++)
{
if(arr[v][i] == 1 && state[i] == nvisited)
{
insert(i);
}
}
}
}
void bfsTraversal()
{
int i;
for(i = 0; i < nv; i++)
{
state[i] = nvisited;
}
printf("Enter starting vertex : ");
scanf("%d", &i);
bfs(i);
}
void createGraph()
{
int i, j;
printf("Enter vertices : ");
scanf("%d", &nv);
for(i = 0; i < nv; i++)
{
for(j = 0; j < nv; j++)
{
printf("Enter value for %d to %d : ", i, j);
scanf("%d", &arr[i][j]);
}
}
}
int main()
{
createGraph();
bfsTraversal();
return 0;
}
#include
#include
#define MAX 50
#define nvisited 0
#define visited 1
int nv;
int arr[MAX][MAX];
int state[MAX];
int stack[MAX], top = -1;
void dfsTraversal();
void dfs(int);
void createGraph();
int pop();
int isEmpty();
int ifFull();
void push(int);
int main()
{
createGraph();
dfsTraversal();
return 0;
}
int isEmpty()
{
if(top == -1)
return 1;
else
return 0;
}
int ifFull()
{
if(top == MAX-1)
return 1;
else
return 0;
}
void push(int x)
{
top++;
stack[top] = x;
}
int pop()
{
int v;
v = stack[top];
top--;
return v;
}
void dfsTraversal()
{
int v;
for(v = 0; v < nv; v++)
state[v] = nvisited;
printf("Enter starting node for DFS : ");
scanf("%d", &v);
dfs(v);
}
void dfs(int v)
{
int i;
push(v);
while(!isEmpty())
{
v = pop();
if(state[v] == nvisited)
{
printf("%d ", v);
state[v] = visited;
}
for(i = nv -1; i>= 0; i--)
{
if(arr[v][i] == 1 && state[i] == nvisited)
push(i);
}
}
}
void createGraph()
{
int i, j;
printf("Enter no. of vertices : ");
scanf("%d", &nv);
for(i = 0; i < nv; i++)
{
for(j = 0; j < nv; j++)
{
printf("Enter value for arr[%d][%d] : ", i, j);
scanf("%d", &arr[i][j]);
}
}
}
#include
#include
struct node
{
int vet;
struct node *next;
}*list[10];
void createlist(int adj[10][10], int vet);
void dis(int vet);
void in_out_total_deg(int vet);
int create(int adj[10][10], int vet);
void display(int adj[10][10], int vet);
int main()
{
int vet;
int adj[10][10];
printf("Enter a no. of vertices = ");
scanf("%d", &vet);
create(adj, vet);
display(adj, vet);
printf("Display link matrix : \n");
createlist(adj, vet);
dis(vet);
printf("Degrees = \n");
in_out_total_deg(vet);
return 0;
}
int create(int adj[10][10], int vet)
{
int i, j;
printf("Enter elements of matrix : ");
for(i = 0; i < vet; i++)
{
for(j = 0; j < vet; j++)
{
printf("\nEnter V[%d][%d] = ", i, j);
scanf("%d", &adj[i][j]);
}
}
}
void display(int adj[10][10], int vet)
{
int i, j;
for(i = 0; i < vet; i++)
{
for(j = 0; j < vet; j++)
{
printf("%d ", adj[i][j]);
}
printf("\n");
}
}
void createlist(int m[10][10], int vet)
{
int i, j;
struct node *temp, *newnode;
for(i = 0; i < vet; i++)
{
list[i] = NULL;
for(j = 0; j < vet; j++)
{
if(m[i][j] == 1)
{
newnode = (struct node *)malloc(sizeof(struct node));
newnode->vet = j;
newnode->next = NULL;
if(list[i] == NULL)
list[i] = temp = newnode;
else
{
temp->next = newnode;
temp = newnode;
}
}
}
}
}
void dis(int vet)
{
int i;
struct node *temp;
for(i = 0; i < vet; i++)
{
printf("V[%d] = ", i);
temp = list[i];
while(temp != NULL)
{
printf("V[%d] -> ", temp->vet);
temp = temp->next;
}
printf("\n");
}
}
void in_out_total_deg(int vet)
{
int i;
struct node *temp;
int in[vet], out[vet];
for(i = 0; i < vet; i++)
{
in[i] = out[i] = 0;
}
for(i = 0; i < vet; i++)
{
temp = list[i];
while(temp != NULL)
{
out[i]++;
in[temp->vet]++;
temp = temp->next;
}
}
for(i = 0; i < vet; i++)
{
printf("V%d Indegree = %d \nV%d Outdegree = %d \nV%d Total degree = %d\n\n", i, in[i], i, out[i], i, in[i]+out[i]);
}
}
#include
int main()
{
int vet, i, j;
printf("Enter no. of vertices : ");
scanf("%d", &vet);
int adjmat[10][10];
int indeg[vet];
int outdeg[vet];
int totaldeg[vet];
for(i = 0; i < vet; i++)
{
indeg[i] = 0;
outdeg[i] = 0;
totaldeg[i] = 0;
}
printf("Enter a elements of matrix : ");
for(i = 0; i < vet; i++)
{
for(j = 0; j < vet; j++)
{
printf("\nEnter a elements V[%d][%d] = ", i, j);
scanf("%d", &adjmat[i][j]);
if(adjmat[i][j] == 1)
{
outdeg[i]++;
indeg[j]++;
totaldeg[i] = totaldeg[i] + 1;
totaldeg[j] = totaldeg[j] + 1;
}
}
}
printf("\nVertice \t In-Degree \t Out-Degree Total \t Degree\n");
for(i = 0; i < vet; i++)
{
printf(" v %d \t \t %d \t \t %d \t \t\t %d \n", i, indeg[i], outdeg[i], totaldeg[i]);
}
return 0;
}
#include
int uni(int i, int j);
int find(int i);
int parent[10] = {0};
#define INFINITY 9999
int main()
{
int arr[10][10] , i, j, n, no_e = 1, u, v,min, a, b, minCost = 0;
printf("Enter number of nodes : ");
scanf("%d",&n);
printf("Enter cost of adj. matrix : \n");
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
printf("Enter : ");
scanf("%d", &arr[i][j]);
if(arr[i][j] == 0)
arr[i][j] = INFINITY;
}
}
while(no_e < n)
{
min = INFINITY;
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(arr[i][j] < min)
{
min = arr[i][j];
u = a= i;
v = b = j;
}
}
}
u = find(u);
v = find(v);
if(uni(u,v))
{
printf("\n%d to %d cost = %d\n", a, b, min);
minCost = minCost + min;
no_e++;
}
arr[a][b] = arr[b][a] = INFINITY;
}
printf("\nMinimum weight is %d \n",minCost);
return 0;
}
int uni(int i, int j)
{
if( i != j)
{
parent[j] = i;
return 1;
}
return 0;
}
int find(int i)
{
while(parent[i])
{
i = parent[i];
}
return i;
}
#include
int main()
{
int cost[10][10], visited[10] = {0}, i, j, n, no_e = 1, min, a,b;
int minCost = 0;
printf("Enter number of nodes : ");
scanf("%d", &n);
printf("Enter cost in form of adjacency matrix :\n ");
for(i = 1; i <= n; i++)
{
for(j = 1; j <= n; j++)
{
printf("Enter : ");
scanf("%d",&cost[i][j]);
if(cost[i][j] == 0)
cost[i][j] = 1000;
}
}
visited[1] = 1;
while(no_e < n)
{
min = 1000;
for(i = 1; i <= n; i++)
{
for(j = 1; j <= n; j++)
{
if(cost[i][j] < min)
{
if(visited[i] == 1)
{
min = cost[i][j];
a = i;
b = j;
}
}
}
}
if(visited[b] == 0)
{
printf("\n%d to %d cost = %d", a, b, min);
minCost = minCost + min;
no_e++;
}
visited[b] = 1;
cost[a][b] = cost[b][a] = 1000;
}
printf("\nMinimum weight is %d\n", minCost);
return 0;
}