APNE KAM SE KAM RAKH ...

IM HERE TO HELP YOU

DIL KHOL KAR COPY KAR MERE BACCHE

BFS

#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;
                        }

DFS

#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]);
                                }
                            }
                        }

ADJ LINK

#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]);
                            }
                        }

ADJACENCY

#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;
}

KRUSKAL

#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;
                        }

PRIMS

#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;
    
}