눈팅하는 게임개발자 블로그
백준 알고리즘 1260 본문
#include#include using namespace std; #define SWAP(x,y,z) z = x, x = y, y = z; int line[1001][1001]; int visited[1001]; class queq { private: int arr[1000]; int *_front; int *_back; int size; void bubble_swap() { int temp = -1; for (int i = 0; i < size; i++) { SWAP(arr[i], arr[i + 1], temp); } } void renew() { if (size == 0) { _front = nullptr; _back = nullptr; } else { _back = arr + size - 1; _front = arr; } } public: queq() { memset(arr, -1, 1000 * sizeof(int)); size = 0; _front = nullptr; _back = nullptr; } void push(int a) { arr[size] = a; size++; renew(); } int pop() { int temp; if (size != 0) { size--; temp = arr[0]; arr[0] = -1; renew(); bubble_swap(); return temp; } else { return -1; } } int rsize() { return size; } int empty() { if (size == 0) { return 1; } else { return 0; } } int front() { if (_front == nullptr) { return -1; } return *_front; } int back() { if (_back == nullptr) { return -1; } return *_back; } }; void dfs(int v, int end, queq *qq) { int temp, temp2; if (visited[v] != 1) { qq->push(v); visited[v] = 1; temp = v; temp2 = 1; while (end >= temp2) { if (line[temp][temp2]) { dfs(temp2, end, qq); } temp2++; } } } void bfs(int v, int end, queq *qq) { int temp, temp2; temp = v; temp2 = 1; while (end >= temp2) { if (line[temp][temp2]) { if (visited[temp2] != 1) { qq->push(temp2); visited[temp2] = 1; } } temp2++; } } int main() { queq q; queq bq; for (int i = 0; i < 1001; i++) { memset(line[i], 0, 1001 * sizeof(int)); } memset(visited, 0, 1001 * sizeof(int)); int N, L, S; int L1, L2; cin >> N >> L >> S; for (int i = 0; i < L; i++) { cin >> L1 >> L2; line[L1][L2] = 1; line[L2][L1] = 1; } dfs(S, N, &q); while (!q.empty()) { cout << q.pop() << " "; } cout << "\n"; memset(visited, 0, 1001 * sizeof(int)); bq.push(S); bfs(S, N, &bq); visited[S] = 1; while (!bq.empty()) { cout << bq.front() << " "; bfs(bq.pop(), N, &bq); } return 0; }
https://www.acmicpc.net/problem/1260
기본적인 자료구조
책한번 훑었다.
'공부한거 > 백준알고리즘' 카테고리의 다른 글
백준 알고리즘 1966 (0) | 2018.05.16 |
---|---|
백준 알고리즘 9020 (0) | 2018.01.12 |
백준 알고리즘 2108 (0) | 2018.01.08 |
백준 알고리즘 10989 (0) | 2018.01.05 |
백준 알고리즘 6064 (0) | 2018.01.02 |