【模板】深搜和廣搜
阿新 • • 發佈:2020-09-18
【模板】深搜和廣搜
#include<iostream> #include<cstring> #include<cstdio> #include<string> #include<queue> #include<stack> #include<algorithm> #include<vector> #include<map> #define MAXN 0x3f3f3f3f using namespace std; int total=0; int n, m; bool vis[100001]={0}; int t; vector<int> q[100001]; queue<int> p; void dfs(int x)//深搜 { vis[x] = 1; cout << x << ' '; for (int i = 0; i <q[x].size();i++) { if(!vis[q[x][i]]) { vis[q[x][i]] = 1; dfs(q[x][i]); } } } void bfs(int x)//廣搜 { memset(vis, 0, sizeof(vis)); p.push(x); vis[x] = 1; cout << x << ' '; while(!p.empty()) { t = p.front(); p.pop(); for (int i = 0;i<q[t].size(); i++) { if(!vis[q[t][i]]) { vis[q[t][i]] = 1; cout << q[t][i]<<' '; p.push(q[t][i]); } } } } int main() { cin >> n >> m; for (int i = 1; i <=m;i++) { int x, y; cin >> x >> y; q[x].push_back(y); } for (int i = 1; i <= n;i++) { sort(q[i].begin(),q[i].end());//排序; } dfs(1); cout << endl; bfs(1); return 0; }