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