1,BFS 宽度优先搜索 泛洪法 层序遍历
#include<bits/stdc++.h>
using namespace std;
const int maxn = 105;
// 任务:求从1点开始,利用bfs遍历完这张图
vector<int> e[maxn];
int bk[maxn]; // 是否已经进入队列
queue<int> q; // 待扩展队列
int main()
{
int n , m; cin >> n >> m;
for (int i = 1 ; i <= m ; i++){
int x , y; cin >> x >> y;
e[x].push_back(y);
e[y].push_back(x);
}
q.push(1);
bk[1] = 1;
// 正式进入bfs
while (q.size()){
int u = q.front();
cout << "现在我在" << u << "点,把他提出队列" << endl;
q.pop();
for (auto v : e[u]){
// 同时也保证了我们的最短路性质
if (bk[v]) // v 要么是跟我同级的,要么在我之前.
{
cout << "对于" << u << "来说" << v << "是没必要访问的" << endl;
continue;// 不管怎么样,都没必要访问了
}
cout << "对于" << u << "来说" << v << "是有必要访问的,放入队列!" << endl;
q.push(v);
bk[v] = 1;
}
}
return 0;
}
2,单源最短路,最优解,用数组记 来的点
3,多源最短路 设超级源点(虚点) 连接多个起点
4,八数码 记录每次bfs后状态