BFS, DFS
Wed Aug 28 2024 02:40:56 GMT+0000 (Coordinated Universal Time)
Saved by
@LizzyTheCatto
// Example program
#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include <unordered_map>
#include <algorithm>
#include <deque>
#include <set>
#include <iostream>
#include <string>
#include <algorithm>
#include <algorithm>
using namespace std;
void BFS(int startnode, const vector<vector<int> >& S){
vector<int> visited(S.size(), 0);
visited[startnode] = 1;
deque<int> dq;
dq.push_back(startnode);
while(dq.empty() == false){
int node = dq.front();
dq.pop_front();
cout << node << " ";
for(int i = 0; i < S[node].size(); i++){
int neighbor = S[node][i]; // Lấy đỉnh kề
if(visited[neighbor] == 0){ // Nếu đỉnh kề chưa được thăm
visited[neighbor] = 1; // Đánh dấu đỉnh kề đã được thăm
dq.push_back(neighbor); // Thêm đỉnh kề vào deque
}
}
}
}
void DFS(int node, const vector<vector<int> >& S, vector<int>& visited){
visited[node] = 1;
cout << node << " ";
for(int i = 0; i < S[node].size(); i++){
if(visited[S[node][i]] == 0){
DFS(S[node][i], S, visited);
}
}
}
int main()
{
int n,m; //số đỉnh, cạnh
cin >> n >> m;
vector<vector<int> > S(n);
vector<int> visited(n,0);
for(int i = 0; i < m; i++){
int a,b;
cin >> a >> b;
S[a].push_back(b);
S[b].push_back(a);
}
DFS(0, S , visited);
return 0;
}
content_copyCOPY
Comments