while (!q.empty()) { int u = q.front(); q.pop(); cout << u << " "; for (int i = head[u]; i != -1; i = edge[i].next) { int v = edge[i].to; if (!visited[v]) { visited[v] = true; q.push(v); } } } }
// 深度优先遍历(递归版) voiddfs(int u, vector<bool>& visited){ visited[u] = true; cout << u << " "; // 访问当前节点 for (int i = head[u]; i != -1; i = edge[i].next) { int v = edge[i].to; if (!visited[v]) { dfs(v, visited); } } }
intmain(){ int n, m; cin >> n >> m; // 邻接表 vector<vector<int>> adj(n + 1); // 读入边(假设无权图) for (int i = 0; i < m; i++) { int u, v; cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); // 无向图 } // BFS int start = 1; vector<bool> visited(n + 1, false); queue<int> q; visited[start] = true; q.push(start); while (!q.empty()) { int u = q.front(); q.pop(); cout << u << " "; for (int v : adj[u]) { if (!visited[v]) { visited[v] = true; q.push(v); } } } return0; }