정점 개수가 일단 1000개라는데...
1260번 - DFS와 BFS
#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;
}
//출력 양식과 배열 크기만 맞추면 되는데...
댓글을 작성하려면 로그인해야 합니다.
lullu 7년 전
런타임에러라는데 왜 그런건가요? 해결 방법도 궁금합니다!!