dfs, bfs

알고리즘 2013. 7. 14. 01:47
dfs와 bfs

기본적이고 중요한 내용인데 머리로는 대충 알겠는데

직접 짜보려면 버벅거리거나 자꾸 꼬인다 연습을 많이 해야겠다

특히 bfs가 좀 낯설다

#include #include #include using namespace std; int V, E, S; vector graph[1005]; bool visit[1005]; void dfs(int v){ if(visit[v]) return; //이미 방문한거면 리턴하고 else visit[v] = 1; printf("%d ", v); for(int i=0; i<graph[v].size(); i++) dfs(graph[v][i]); return; } void bfs(int v){ queue q; q.push(v); visit[v] = 1; while( !q.empty() ){ v = q.front(); //큐의 맨앞에꺼 출력하고 printf("%d ", v); q.pop(); //비워 주고 for(int i=0; i<graph[v].size(); i++){//맨앞에 있던 원소의 자식들에 대해 탐색 int next = graph[v][i]; if( !visit[next] ){ //방문안했으면 체크해주고 visit[next] = 1; q.push(next); //큐에 넣어줌 } } } }

'알고리즘' 카테고리의 다른 글

꿈틀꿈틀  (0) 2013.07.30
에라토스테네스의 체  (0) 2013.07.30
dp를 recursive로, iterative로  (0) 2013.07.18
LCS(longest common subsequence)  (0) 2013.07.16
바이너리서치 할때 주의할점  (0) 2013.07.14
Posted by bogus919
,