#include #define Q q.front() using namespace std; int n, m, ans = 1e9, blank = 0; int Map[50][50] = {}; vector virus; vector vec; int V[4] = {-1, 0, 1, 0}, H[4] = {0, 1, 0, -1}; void BFS() { queue q; //큐 int tmp = 0, cnt = 0; //tmp는 탐색 level, cnt는 0을 채운 개수 bool v[n][n]; //방문 확인 memset(v, false, sizeof(bool)*n*n); //초기화 for(pair i : vec) { //활성화 할 바이러스들을 큐에 삽입 및, 방문 처리 int x = i.first; int y = i...
#include #define Q q.front() using namespace std; int V[4] = {-1, 0, 1, 0}; int H[4] = {0, 1, 0, -1}; int n, m, zero = -3; //벽 3개를 무조건 설치하므로 -3으로 시작합니다. int Max = 0; int Map[8][8] = {}; vector two; void bfs(void) { //bfs queue q; //큐 int cnt = zero; //벽 3개를 설치한 이후 0의 개수 bool v[n][m]; //방문 확인 배열 memset(v, false, sizeof(bool)*n*m); //방문 확인 for(pair i : two) q.push({i.first, i.second}); //바이러스인 곳을 ..

#include #define Q q.front() using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int n, m, a, b, c; //a, b, c는 입력을 위한 변수 cin >> n >> m; vector vec[n+1]; //간선의 정보를 담을 벡터 queue q; //BFS에서 사용할 큐 for(int i=1; i> a >> b >> c; vec[a].push_back({b, c}); vec[b].push_back({a, c}); } for(int i=0; i> a >> b; q.push({a, 0}); //큐에 시작노드와 가중치를 0 으로 넣음 v[a] = true; while(!q.empty()) { //B..
#include #define Q q.front() using namespace std; struct A { A(int a, int b, int c, int d) : x(a), y(b), z(c), value(d) {} int x, y, z, value; }; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int V[4] = {-1, 0, 1, 0}; int H[4] = {0, 1, 0, -1}; int n, m, min = 1e9; cin >> n >> m; if(n==1 && m==1) { cout map[i]; bool v0[n][m]; memset(v0, false, sizeof(bool)*n*m); bool v1[n][m]; memset(v1, ..
#include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int s, ans = 1e9; cin >> s; queue q; q.push(make_tuple(1, 1, 1)); bool v[1001] = {}; //방문확인 while(!q.empty()) { //bfs int now = get(q.front()); int copy = get(q.front()); int value = get(q.front()); q.pop(); if(now == s) { //원하는 개수로 맞추었다면 탐색 종료 ans = value; break; } value++; //수행시간 1 증가 if(now 2) q.push(make_tupl..
#include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int t; cin >> t; while(t--) { int a, b; queue q; cin >> a >> b; q.push(make_tuple(a, b, 0)); while(!q.empty()) { int x = get(q.front()); int y = get(q.front()); int v = get(q.front()); q.pop(); x *= 2; y += 3; v++; if(x < y) q.push(make_tuple(x, y, v)); else if(x==y) { cout
#include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int a, b, n, m, x, y; cin >> a >> b; //출발, 도착 cin >> n >> m; //개수, 쿼리의 개수 vector vec[n+1]; //간선을 저장할 벡터들 bool v[n]; //방문을 확인할 배열 memset(v, false, n * sizeof(bool)); //방문을 확인할 배열을 0으로 초기화 합니다. while(m--) { //간선을 벡터에 저장합니다. cin >> x >> y; vec[x].emplace_back(y); vec[y].emplace_back(x); } if(a == b) { //출발과 도착이 같은 경..
#include using namespace std; int main(void) { ios::sync_with_stdio(0); int n, a, b; cin >> n; vector vec[n+1]; //간선들을 저장할 벡터들 queue q; //BFS을 위한 큐 bool v[n+1]; //방문했는가? int ans[n+1]; //부모노드 저장 memset(v, false, sizeof(v)); //v을 전부 false로 초기화 for(int i=2; i> a >> b; vec[a].emplace_back(b); vec[b].emplace_back(a); } //root 는 1 for(int i : vec[1]) q.push({1, i}); //큐에 간선에 1이 포함된 것을 집어넣기 v[1] = true..
- Total
- Today
- Yesterday
- 누적 합
- C++
- find
- 백준
- Segment Tree
- 세그먼트 트리
- BFS
- XOR
- C언어
- Lazy Propagation
- DFS
- Krustal
- 정렬
- 누적합
- DP
- PASCAL
- 최대공약수
- 덱
- union
- 1835
- 그리디
- 기하학
- java
- 최소 스패닝 트리
- 스택
- 오프라인 쿼리
- 플로이드
- 1835번
- 그래프
- 브루트포스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |