本文共 1335 字,大约阅读时间需要 4 分钟。
为了解决这个问题,我们需要使用广度优先搜索(BFS)来遍历一个给定的无向连通图,并输出从某个顶点出发的遍历序列。同一个结点的同层邻接点,节点编号小的优先遍历。
#include#include #include using namespace std;int main() { int T; cin >> T; for(int test = 0; test < T; test++) { int k, m, t; cin >> k >> m >> t; vector > adj(k, vector (k, 0)); for(int i = 0; i < m; i++) { int u, v; cin >> u >> v; adj[u][v] = 1; adj[v][u] = 1; } vector order; bool vis[k] = {false}; queue q; q.push(t); vis[t] = true; order.push_back(t); while(!q.empty()) { int v = q.front(); q.pop(); for(int i = 0; i < k; i++) { if(!vis[i] && adj[v][i]) { vis[i] = true; q.push(i); order.push_back(i); } } } for(int i = 0; i < k; i++) { if(i != 0) { cout << " "; } cout << order[i]; } cout << endl; } return 0; }
adj来存储邻接矩阵,初始化为0表示没有边。读取每条边并填充邻接矩阵。order中。转载地址:http://vdia.baihongyu.com/