본문 바로가기

알고리즘/DFS30

2250 트리의 높이와 너비 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103#include #include #include #include using namespace std; vector heightNd;vector child;int par[10001] = { 0 };int ndX[10001] = { 0 };int maxWidth = -1 , mostLevel; void levelWidth(int h) { for (int .. 2020. 1. 22.
(시간초과) 2146 다리만들기 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091#include #include #include #include using namespace std; int arr[104][104] = { 0 };int chk[104][104] = { 0 };int chkMat[104][104] = { 0 };int n, sum = 0; void isLink(int a, int b) { queue q; q.push(make_pair(a, b)); int dx[4].. 2020. 1. 18.
14502 연구실 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394#include #include #include #include using namespace std; int m[10][10] = { 0 };int chk[10][10] = { 0 };int row, col;int maxRst = -1; void bfsScore() { queue q; int matChk[10][10] = { 0 }; for (int i = 1; i 2020. 1. 17.
4677 Oil Deposit 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#include #include char arr[105][105] = { 0 };char chk[105][105] = { 0 }; int dx[8] = { 0,1,1,1,0,-1,-1, -1 };int dy[8] = { 1,1,0,-1,-1,-1,0, 1 };void dfs(int y, int x, int row, int col) { chk[y][x] = 1; for (int i = 0; i 2020. 1. 14.
2468 안전영역 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071#include #include int arr[105][105] = { 0 };int chk[105][105] = { 0 }; int dx[4] = { 1,-1,0,0 };int dy[4] = { 0,0,1,-1 }; void dfs(int y, int x, int w) { chk[y][x] = -1; for (int i = 0; i 2020. 1. 14.
2798 블랙잭 1234567891011121314151617181920212223242526272829303132333435363738394041#include #include using namespace std; vector arr; void dfs(int idx, int tmp, int sum); int n, m, maxS = 0;int main() { scanf("%d %d", &n, &m); for (int i = 0; i 2019. 9. 15.
11438 LCA2 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100#include #include #include using namespace std; int rst, maxD = (int)log2(100005);int depth[100005] = { 0 };int par[100005][100] = { 0 };int visit[100005] = { 0 }; vector son(100005);vector adj(100005); voi.. 2019. 9. 15.
11437 LCA 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117#include #include #include using namespace std; int depth[50005] = { 0 };int par[50005][30] = { 0 };int visit[50005] = { 0 };int rst; vector son(50005);vec.. 2019. 9. 14.
10451 순열 사이클 # 1. dfs 부분을 visit 배열로 했을 경우 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include #include int fin[100005];int arr[100005]; int visit[100005]; int start, cnt = 0; void dfs(int idx); int main() { int t; scanf("%d", &t); while (t--) { int n; scanf("%d", &n); memset(fin, 0, sizeof(int) * (n + 1)); memset(arr, 0, sizeof(int) * (n + 1)); memset(visit, 0, siz.. 2019. 9. 4.
9466 텀 프로젝트(hard) 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950#include #include int fin[100005];int arr[100005]; int visit[100005]; int start, cnt = 0; void dfs(int idx); int main() { int t; scanf("%d", &t); while (t--) { int n; scanf("%d", &n); memset(fin, 0, sizeof(int) * (n + 1)); memset(arr, 0, sizeof(int) * (n + 1)); memset(visit, 0, sizeof(int) * (n + 1)); for .. 2019. 9. 3.
2668 숫자 고르기 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758#include #include using namespace std; int ans[105] = { 0 };int arr[105] = { 0 };int visit[105] = { 0 }; int start, n; void dfs(int idx); int main() { scanf("%d", &n); for (int i = 1; i 2019. 9. 3.
1991 트리 순회 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586#include #include #include using namespace std; vector arr(30); int ctoi(char c) { return (int)(c - 'A' + 1);} char itoc(int n) { return (char)(n + 'A' - 1);} void preorder(int c);void inorder(int c);void postorder(int c); int main() {.. 2019. 8. 26.