lullu   7달 전

런타임에러라는데 왜 그런건가요? 해결 방법도 궁금합니다!!

atomzeno   7달 전

정점 개수가 일단 1000개라는데...

atomzeno   7달 전

#include <stdio.h>
  
int n;
int Dmap[1001][1001], Dvisit[1001];
int rear, front;
int Bmap[1001][1001], queue[1001], Bvisit[1001];
  
void DFS(int Dv) {
    int i;
    Dvisit[Dv] = 1;
    for (i = 0; i <= n; i++) {
        if (Dmap[Dv][i] == 1 && !Dvisit[i]) {
            printf("%d ", i);
            DFS(i);
        }
    }
      
}
  
void BFS(int Bv) {
    int i;
    Bvisit[Bv] = 1;
    printf("%d ", Bv);
    queue[rear++] = Bv;
    while (front < rear) {
        Bv = queue[front++];
        for (i = 0; i <= n; i++) {
            if (Bmap[Bv][i] == 1 && !Bvisit[i]) {
                Bvisit[i] = 1;
                printf("%d ", i);
                queue[rear++] = i;
            }
        }
    }
}
  
int main() {
    int start;
    int m,i;
    int v1, v2;
    scanf("%d %d %d", &n, &m, &start);
    while (m > 0) {
        scanf("%d %d", &v1, &v2);
        Dmap[v1][v2] = Dmap[v2][v1] = 1;
        Bmap[v1][v2] = Bmap[v2][v1] = 1;
        m--;
    }
    printf("%d ", start);
    DFS(start);
    printf("\n");
    BFS(start);
    return 0;
}

//출력 양식과 배열 크기만 맞추면 되는데...

댓글을 작성하려면 로그인해야 합니다.