-
(C++)DFS stack을 이용해서 구현해보기PROGRAMMING/STL 2024. 4. 4. 00:31
#include <iostream> #include <stack> #include <vector> using namespace std; class Graph { int V; vector<vector<int>> adj; public: Graph(int V) : V(V) {} void addEdge(int v, int w); void DFS(int s); }; void Graph::addEdge(int v, int w) { adj[v].push_back(w); } void Graph::DFS(int s) { vector<bool> visited(V, false); stack<int> st; st.push(s); while (!st.empty()) { int s = st.top(); st.pop(); if (!visited[s]) { visited[s] = true; } for (auto i = adj[s].begin(); i != adj[s].end(); ++i) { if (!visited[*i]) st.push(*i); } } }
출처 : https://www.geeksforgeeks.org/iterative-depth-first-traversal/
'PROGRAMMING > STL' 카테고리의 다른 글
(백준 1743번 음식물 피하기C++) 라이님 블로그 대회 알고리즘 따라잡기 8) DFS 3 (0) 2024.04.04 (백준 1012번 유기농배추 C++) 라이님 블로그 대회 알고리즘 따라잡기 8) DFS 2 (0) 2024.04.04 (백준 2840번 행운의 바퀴 C++) 라이님 블로그 대회 알고리즘 따라잡기 7) 리스트, 배열, 연결 리스트 4 (2) 2024.03.27 (백준 2346번 풍선 터뜨리기 C++) 라이님 블로그 대회 알고리즘 따라잡기 7) 리스트, 배열, 연결 리스트 3 (0) 2024.03.26 ★연결리스트 LinkedList (0) 2024.03.25