2015년 12월 2일 수요일

알고리즘:BFS node 순회 하기

BFS node 순회 하기

bfs.txt

6 9
1 2 1 3 2 4 2 5 3 4 3 6 4 5 4 6 5 6

----------------------------------------------

#include <stdio.h>

int n;
int link;
int que[30];
int visit[30];
int map[30][30];
int front = 0;
int rear = 0;

void bfs(int v){
    // visit 표시
    visit[v] = 1;
    //que에 v 삽입
    que[rear++] = v;
    // que가 빌때까지
    while(front < rear){
            // v 값에 연결된 값 검색
        int node = que[front++];
        // node와 연결된 v를 찾는다.
        for(int i = 0; i <= n; i ++ ){
                // 연결 되어 있고 방문하지 않았다면
            if(map[node][i] == 1 && visit[i] == 0 ){
                // 방문표시 하고 que에 넣는다.
                visit[i] = 1;
                que[rear++] = i;
                printf("%d -> %d \n", node, i);
            }
        }
    }
}


int main()
{
    int start;
    int v1, v2;


    freopen("bfs.txt","r",stdin);

    scanf("%d%d", &n, &link);


    for(int i =0 ; i < link; i++){
        scanf("%d%d", &v1, &v2);

        map[v1][v2] = map[v2][v1] = 1;
    }

    bfs(1);

    return 0;
}

댓글 없음:

댓글 쓰기