voiddfs(int u){ if (vis[u]) return; printf("%d ", u); vis[u] = true; for (int i = 0; i < graph[u].size(); i++) { int v = graph[u][i]; if (!vis[v]) { dfs(v); } } }
BFS广度优先搜索
从起点顶点开始,遍历这个点的所有邻接点。
每遍历一个点,将该点的所有邻接点加入队列,标记该点为已访问,直到队列为空,遍历结束。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
voidbfs(int u){ printf("%d ", u); vis[u] = true; queue<int> q; q.push(u); while (!q.empty()) { int u = q.front(); q.pop(); for (int i = 0; i < graph[u].size(); i++) { int v = graph[u][i]; if (!vis[v]) { printf("%d ", v); vis[v] = true; q.push(v); } } } }
node 1 to 1: minimum weight is 0 node 1 to 2: minimum weight is 8 node 1 to 3: minimum weight is 5 node 1 to 4: minimum weight is 9 node 1 to 5: minimum weight is 7