반응형 알고리즘222 [알고리즘] c++ cpp 숨바꼭질 시리즈 (숨박꼭질4) 포인트 1. BFS (너비 우선 탐색) 2. 이번 조건은 방문했던 경로들을 기억을 할 수 있는가 이다. 🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다. #include #include #include #include using namespace std; const int MAX = 100001; int parent[MAX]; //해당 지점 방문 직전 지점 저장 bool visited[MAX]; vector map; //경로 저장 int n, m; int bfs() { queue q; // 페어 큐를 만든다. q.push({n, 0}); visited[n] = 1; while (!q.empty()) { // 빌때 까지 반복 int x, time; tie(x, time) = q.front(); q... 2020. 10. 4. [알고리즘] c++ cpp 숨바꼭질 시리즈 (숨바꼭질3) 포인트 1. bfs() 를 잘 알고 있는가? 2. bfs는 모든 노드를 지날때 같은 가중치를 같는 노드만 탐색을 할 수 있다. 이에 dequeue 를 사용을 하여 가중치를 다르게 처리를 하여 bfs 를 진행할 수 있도록 한다. 🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다. #include #include #include using namespace std; int n, m; int dist[100001]; void bfs() { // bfs 는 모든 노드로 가는 가중치가 1인 경우나 같은 경우이다. // 지금 문제는 하나의 가중치가 다름으로 다르게 처리를 해야 한다. deque q; q.push_back(n); dist[n] = 0; while (!q.empty()) { int x = q.fr.. 2020. 10. 4. [알고리즘] c++ cpp 숨바꼭질 시리즈 (숨바꼭질2) 포인트 1. BFS (너비 우선 탐색) 를 이해를 하고 있는가? 2. 숨바꼭질 2에서 중요한 점은 가장 빠른 경우의 수를 세는 것이다. 기존 BFS () 는 최초 도착 만을 세기 때문에 다른 방식으로 처리를 해주어야 한다. #include #include #include using namespace std; #define MAX 100000 + 1 int cnt; int time; bool visited[MAX]; int n, m; int second() { queue q; q.push(make_pair(n, 0)); visited[n] = 1; while (!q.empty()) { int x, xtime; tie(x, xtime) = q.front(); q.pop(); visited[x] = 1; //.. 2020. 10. 4. [알고리즘] c++ cpp 숨바꼭질 시리즈 (숨바꼭질1) 포인트 1. BFS (너비 우선 탐색) 2. 기본적인 것들은 똑같고 조건들만 다름을 이해하자 #include #include using namespace std; #define MAX 100001 bool visited[MAX]; int n, m; int bfs() { queue q; int time = 0; q.push(n); while (1) { int size = q.size(); for (int i = 0; i 0 && !visited[n - 1]) { //범위체크 && 방문하지 않았거나 q.push(n - 1); visited.. 2020. 10. 4. 이전 1 ··· 47 48 49 50 51 52 53 ··· 56 다음 반응형