페이지

1260번: DFS와 BFS



$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;
}

댓글 없음 :

댓글 쓰기