DFS

#include <stdio.h>

#define MAX_VERTICES 9 // Using 9 so we can use 1-based indexing (1 to 8)

// Global adjacency matrix
int adj_matrix[MAX_VERTICES][MAX_VERTICES];
// Global visited array
int visited[MAX_VERTICES];

// Function to build the specific graph from the image
void create_graph_by_matrix() {
    // 1. Initialize matrix to 0
    for(int i = 0; i < MAX_VERTICES; i++) {
        for(int j = 0; j < MAX_VERTICES; j++) {
            adj_matrix[i][j] = 0;
        }
    }

    int u_nodes[] = {1, 1, 2, 2, 3, 3, 4, 5, 6, 7};
    int v_nodes[] = {2, 3, 4, 5, 6, 7, 8, 8, 8, 8};
    int num_edges = 10;

    for(int k = 0; k < num_edges; k++) {
        int u = u_nodes[k];
        int v = v_nodes[k];
        // Undirected graph: set both [u][v] and [v][u]
        adj_matrix[u][v] = 1;
        adj_matrix[v][u] = 1;
    }
}

void DFS(int u) {
    visited[u] = 1;
    printf("%d,", u);

    for(int v = 1; v < MAX_VERTICES; v++) {
        if(adj_matrix[u][v] == 1 && !visited[v]) {
            DFS(v);
        }
    }
}

int main() {
    // Initialize
    create_graph_by_matrix();
    for(int i = 0; i < MAX_VERTICES; i++) {
        visited[i] = 0;
    }

    int start_node;
    // Check if input is read successfully
    if (scanf("%d", &start_node) == 1) {
        if (start_node >= 1 && start_node <= 8) {
            DFS(start_node);
        }
    }

    return 0;
}

 

posted @ 2025-12-24 09:55  我不是青山  阅读(2)  评论(0)    收藏  举报