图遍历_邻接表
来源:互联网 发布:淘宝属于腾讯软件吗 编辑:程序博客网 时间:2024/06/14 02:12
/*图遍历_邻接表*/#include <stdlib.h>#include <memory.h>#include <iostream>#include <queue>using namespace std;#define NODE_NUM 10//邻接表 struct Node{ vector<int> adj;}node[NODE_NUM];int vetexNum , edgeNum;int visit[NODE_NUM];//深度遍历 void DFS(int k){ visit[k] =1; cout << k << endl; for(int i=0; i<node[k].adj.size(); i++) { if(!visit[node[k].adj[i]]) DFS(node[k].adj[i]); }}//---------广度遍历-------------void BFS(int k){ queue<int> q; q.push(k); visit[k] = 1; cout << k << endl; while(!q.empty()) { int qHead = q.front(); Node current = node[qHead]; q.pop(); for(int i=0; i<current.adj.size(); i++ ) { if(!visit[current.adj[i]]) { visit[current.adj[i]] = 1; cout << current.adj[i] << endl; q.push(current.adj[i]); } } } }int main(){ freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); while(cin >> vetexNum >> edgeNum) { memset(visit,0,sizeof(visit)); for(int i=1; i<=edgeNum; i++) { int start, end; cin >> start >> end; node[start].adj.push_back(end); node[end].adj.push_back(start); } cout << "深度优先搜索"<< endl; DFS(0); cout << endl; memset(visit,0,sizeof(visit)); cout << "广度优先搜索"<< endl; BFS(0); } return 0;}