Untitled

 avatar
unknown
plain_text
5 months ago
1.6 kB
3
Indexable
#include<stdio.h>

int top= -1,a[20][20],vis[20],stack[20];

void dfs(int s,int n);
void push(int item);
int pop();

void main()
{
     int n,e,i,s,j,u,v;

     printf("Enter the number of vertices in the graph:");
     scanf("%d",&n);

     printf("Enter the number of edges in the graph:");
     scanf("%d",&e);

     printf("Enter the edges(u,v):\n");
     for(i=1;i<=e;i++)
     {
        scanf("%d %d",&u,&v);
        a[u][v]=1;
      }

     printf("THE ADJACENCY MATRIX IS\n");
     for(i=1;i<=n;i++)
     {
       for(j=1;j<=n;j++)
       {
          printf("%d", a[i][j]);
         }
      printf("\n");
     }
      for(i=1;i<=n;i++)
           vis[i]=0;

   printf("ENTER THE SOURCE VERTEX:");
   scanf("%d",&s);

   dfs(s,n);
  }
   void push(int item)
   {
       if(top==19)
          printf("Stack overflow");
        else
          stack[++top]= item;
        }
   int pop()
    {
        int k;
        if(top==-1)
              return(0);
    else
     {
           k= stack[top--];
             return(k);
      }
    }
 
  void dfs(int s, int n)
 {
    int i,k;
 
    push(s);
    vis[s]=1;
    k=pop();
  
  if(k!=0)
       printf("%d",k);
   while(k!=0)
    {
       for(i=1; i<=n; i++)
           if((a[k][i]!=0)&&(vis[i]==0))
             {
                 push(i);
                 vis[i]=1;
             }
   
        k=pop();
 
        if(k!=0)
             printf("%d",k);
    }
     for(i=1; i<=n; i++)
        if(vis[i]==0)
              dfs(i,n);
}
Editor is loading...
Leave a Comment