본문 바로가기

알고리즘/DFS30

17412 도시 왕복하기 1 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081#include #include #include #include using namespace std; vector adj(405); int cost[405][405] = { 0 };int flow[405][405] = { 0 }; int main() { int n, p, rst = 0; scanf("%d %d", &n, &p); while (p--) { int a, b; scanf("%d %d", &a, &b); cost[a][b] =.. 2019. 8. 22.
11377 열혈강호3 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113#include #include #include using namespace std; vector adj(2020); int flow[2020][2020] = { 0 };int cost[2020][2020] = { 0 };int mid = 2010, last = 2015; int main() { i.. 2019. 8. 22.
6086 최대 유량 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798#include #include #include #include using namespace std; int cost[60][60] = { 0 };int flow[60][60] = { 0 };vector adj(60); int ctoi(char c) { if (c 2019. 8. 22.
11376 열혈강호2 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465#include #include #include using namespace std; vector adj;int from[1005] = { 0 };int visit[1005] = { 0 };int cnt = 0; int dfs(int idx); int main() { int n, m; scanf("%d %d", &n, &m); adj.resize(n + 1); for (int i = 1; i 2019. 8. 20.
11375 열혈강호 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#include #include #include using namespace std; vector adj;int from[1005] = { 0 };int visit[1005] = { 0 }; int dfs(int idx); int main() { int n, m; scanf("%d %d", &n, &m); adj.resize(n + 1); for (int i = 1; i 2019. 8. 20.
1987 알파벳 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172#include int arr[30][30] = { 0 };int r, c, rstLen = 0;int visit[100] = { 0 }; void DFS(int y, int x, int len); int main() { scanf("%d %d", &r, &c); for (int i = 0; i = 0) { int alpha = arr[y - 1][x]; if (visit[alpha] == 0) { visit[alpha] = 1; DFS(y - 1, x, len + .. 2019. 8. 1.
1389 케빈 베이컨의 6단계 법칙 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455#include int adj[105][105] = { 0 };int dp[105][105] = { 0 };int INF = 1000000; int main() { int n, m; scanf("%d %d", &n, &m); for (int i = 1; i 2019. 8. 1.
6603 로또 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include #include #include using namespace std; int arr[20] = { 0 };int check[20] = { 0 };int n; void DFS(int idx, int len, vector v); int main() { while (1) { scanf("%d", &n); getchar(); if (n == 0) break; for (int i = 1; i 2019. 7. 31.
2583 영역 구하기 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869#include #include using namespace std; int check[105][105] = { 0 };int val = 0, m, n, k; void DFS(int y, int x); int main() { scanf("%d %d %d", &m, &n, &k); for (int i = 1; i 2019. 7. 30.
10026 적록색약 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106#include #include using namespace std; int rst1 = 0, rst2 = 0;int arr1[105][105] = { 0 };int arr2[105][105] = { 0 };int check[105][105] = { 0 }; void DFS1(int y, int x, int color);void DFS.. 2019. 7. 30.
11724 연결요소의 갯수 123456789101112131415161718192021222324252627282930313233343536373839#include int adj[1005][1005] = { 0 };int check[1005] = { 0 };int n; void DFS(int v); int main() { int m; scanf("%d %d", &n, &m); for (int i = 1; i 2019. 7. 30.
11403 경로찾기 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273#include using namespace std; const int MAX = 100; int N; int graph[MAX][MAX]; void floyd(void) { //i->j로 가는 길이 없어도 //k를 거쳐갈 수 있으면 갈 수 있다고 여긴다 for (int k = 0; k 2019. 7. 30.