Quick actions

cmd+k|ctrl+k

Navigation

Languages

DFS / BFS

Snippet info

Language

C

Visibility

public

Author

kim112mgxld

Created

2020-08-18T04:47:45Z

Updated

2020-08-18T04:47:45Z

#include <stdio.h>
#define E 1001

int metrix[E][E];
int visits[E * E];

int q[E];
int front = -1, rear = -1;

void initBfs () {
    for (int i = 0; i < E * E; i++) {
        visits[i] = 0;
    }
}

void DFS (int V, int N) {
    visits[V] = 1;
    
    printf("%d ", V);
    
    for (int i = 1; i <= N; i++) {
        if (!visits[i] && metrix[V][i]) {
            DFS(i, N);
        }
    }
}

void BFS (int V, int N) {
    rear++;
    q[rear] = V;
    visits[V] = 1;
    
    printf("%d ", V);
    
    while (front < rear) {
        front++;
        int v = q[front];
        
        for (int i = 1; i <= N; i++) {
            if (!visits[i] && metrix[v][i]) {
                printf("%d ", i);
                
                rear++;
                q[rear] = i;
                visits[i] = 1;
            }
        }
    }
}

int main(void) {
    int N = 0;
    int M = 0;
    int V = 0;
    
    scanf("%d %d %d", &N, &M, &V);
    
    for (int i = 0; i < M; i++) {
        int firstV = 0;
        int secondV = 0;
        
        scanf("%d %d", &firstV, &secondV);
        
        metrix[firstV][secondV] = 1;
        metrix[secondV][firstV] = 1;
    }
    
    DFS(V, N);
    
    printf("\n");
    
    initBfs();
    
    BFS(V, N);
    
    printf("\n");
    
    return 0;
}
INFO