Quantcast
Channel: CodeChef Discuss - latest questions
Viewing all articles
Browse latest Browse all 40121

Depth First Search not working

$
0
0
#include< stdio.h>
#include< stdlib.h>

struct node{
    int vertex;
    int initial,end;
    struct node *next;
} *arr[50], *p, *q, *p2, *p3;

int visited[50]={0};
int t=1;

void DFS_main(int);
void DFS(struct node *);

int main(){
    int u,v,n,i;

    scanf("%d",&n);

    for(i=1;i<=n;i++){  
        arr[i]=(struct node *)malloc(sizeof(struct node));
        arr[i]->vertex=i;
        arr[i]->next=NULL;
    }

    while(5){
        scanf("%d%d",&u,&v);

        if(u==-1&&v==-1)
            break;

        p=arr[u];

        while(p->next!=NULL)
            p=p->next;

        q=(struct node *)malloc(sizeof(struct node));
        q->vertex=v;

        q->next=NULL;

        p->next=q;
    }
    p=arr[1];

    printf("The DFS for the Graph is\n");

    DFS_main(n);
    printf("out of dfs\n");
    printf("\n");

    for(i=1;i<=n;i++){
        //p2=arr[i];
        printf("%d  %d  %d\n",arr[i]->vertex,arr[i]->initial,arr[i]->end);
    }
    return 0;
}

void DFS_main(int n){
    int i;

    for(i=1;i<=n;i++){
        //printf("start vertex...%d\n",arr[i]->vertex);
        p=arr[i];

        if(visited[p->vertex]==0)

            DFS(p);
    }
}
void DFS(struct node *p1){

    visited[p1->vertex]=1;
    p1->initial=t++;

    printf("%d ---->",p1->vertex);

    p2=p1;
    while((p2=p2->next)!=NULL){
        if(visited[p2->vertex]==0){
            printf("%d  \n",p2->vertex);
            p3=arr[p2->vertex];
            DFS(p3);
        }   

    }

        p1->end=t++;
        //printf("  %d\n",p1->end); 
}

Viewing all articles
Browse latest Browse all 40121

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>