$O(n^2)$
DFS, BFS 구현
#include<cstdio> const int MXN = 1e3; int adj[MXN + 1][MXN + 1], n, m, s, ck[MXN + 1]; void dfs(int x) { if (ck[x]) return; ck[x] = 1; printf("%d ", x); for (int i = 1; i <= n; i++) if (adj[x][i]) dfs(i); } int q[MXN], h, t; void bfs(int x) { q[t++] = x; ck[x] = 1; while (h^t) { printf("%d ", q[h]); for (int i = 1; i <= n; i++) if (adj[q[h]][i] && !ck[i]) ck[q[t++] = i] = 1; h++; } } int main() { scanf("%d %d %d", &n, &m, &s); for (int i = 0, x, y; i < m; i++) scanf("%d %d", &x, &y), adj[x][y] = adj[y][x] = 1; dfs(s); for (int i = 1; i <= n; i++) ck[i] = 0; puts(""); bfs(s); return 0; }
댓글 없음 :
댓글 쓰기