#include<stdio.h>
#include<stdlib.h>
#define N 5
int adj[N][N] =
{
    {0, 1, 1, 0, 0},  // 0 → 1, 2
    {0, 0, 0, 1, 1},  // 1 → 3, 4
    {0, 0, 0, 0, 0},  // 2
    {0, 0, 0, 0, 0},  // 3
    {0, 0, 0, 0, 0}   // 4
};

int visited[N] = {0};
int front = 0, rear = 0;
int queue[N];
void BFS(int start)
{
    int current = 0;
    front = rear = 0;
    queue[rear++] = start;
    visited[start] = 1;
    while(front < rear)
    {
        current = queue[front++];
        printf("%d ", current);
        for(int j = 0; j < N; j++)
        {
            if(adj[current][j] == 1 && visited[j] == 0)
            {
                visited[j] = 1;
                queue[rear++] = j;
            }
        }
    }
}
int main()
{
    BFS(0);
    return 0;
}