본문 바로가기

BFS5

백준(BOJ) 2667 단지번호붙이기 * # BFS 각 지도를 돌면서 BFS 알고리즘을 실행시켜주면된다. 이미 이전에 방문한 단지는 방문하지 않는다! #include #include #include #include #define MAX 30 #define INF 2123456789 using namespace std; typedef long long ll; typedef pair pi; // map[0][][]에는 이전에 방문 여부를 저장하고 // map[1][][]에는 집의 유무를 저장한다. int n, map[2][MAX][MAX]; // 4방향에 대해서 탐색한다. int dy[4]={0,1,0,-1},dx[4]={1,0,-1,0}; vector ans; char str[MAX]; // bfs 알고리즘 void bfs(int y,int x).. 2019. 3. 14.
백준(BOJ) 2665 미로만들기 * # BFS 어렵지않은 BFS 문제이다. 유의해야 할 점은 방문한 칸에 대한 값 저장만 잘 해주면 될 듯! #include #include #include #include #define MAX 55 #define INF 2123456789 using namespace std; typedef long long ll; typedef pair pi; // p는 좌표값, black은 화이트로 만든 칸의 갯수 struct st{ pi p; int black=0; }; int n; int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0}; // map은 입력 받아 온것 , visit은 해당 좌표까지 오는데 black의 최소 값 int map[MAX][MAX],visit[MAX][MAX]; char str[.. 2019. 3. 13.
백준(BOJ) 16174 점프왕 젤리 ** # BFS # 스까묵자 #include #include #include #include #include #include using namespace std; long long ans; typedef pair pa; int n, arr[100][100], che[100][100]; int main() { scanf("%d", &n); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { scanf("%d", arr[i] + j); } } deque dq; dq.push_back({ 0, 0 }); while (!dq.empty()) { pa now = dq.front(); dq.pop_front(); che[now.first][now.second] = .. 2018. 10. 4.
백준(BOJ) 1938 통나무 ** # BFS 정말 너무 나도 지저분한 문제여서 소름이 끼쳤다.헿공부 용으로 좋은 문제는 아닌 것 같다. #include #include #include #include using namespace std; struct Node { int se; int ga; int k; int gab; }; int n; char map[51][51]; Node s, e; int dp[2][50][50]; int dx[4] = { 0,1,0,-1 }; int dy[4] = { -1,0,1,0 }; int dkx[2] = {0,1}; int dky[2] = { 1,0 }; bool inQ[2][50][50]; queue qu; bool check(Node now,int i) { if (now.se + dy[i] - dky[n.. 2018. 5. 31.