// C# implementation of modified BFS for adjacency matrix // representation using System; using System.Collections.Generic; class Gfg { static void AddEdge(int[, ] edges, int f, int s) { edges[f, s] = 1; } static void PrintBFS(int[, ] edges, int V, int start, int[] visited) { if (V == 0) return; Queue<int> BFS = new Queue<int>(); BFS.Enqueue(start); visited[start] = 1; while (BFS.Count > 0) { int data = BFS.Dequeue(); Console.Write(data + " "); for (int i = 0; i < V; i++) { if (edges[data, i] == 1) { if (visited[i] == 0) { BFS.Enqueue(i); visited[i] = 1; } } } } } static void BFSHelper(int[, ] edges, int V) { if (V == 0) return; int[] visited = new int[V]; for (int i = 0; i < V; i++) { visited[i] = 0; } for (int i = 0; i < V; i++) { if (visited[i] == 0) { PrintBFS(edges, V, i, visited); } } Console.WriteLine(); } static void Main(string[] args) { int V = 5; int E = 6; if (E == 0) { for (int i = 0; i < V; i++) { Console.Write(i + " "); } Console.WriteLine(); Environment.Exit(0); } int[, ] edges = new int[V, V]; for (int i = 0; i < V; i++) { for (int j = 0; j < V; j++) { edges[i, j] = 0; } } AddEdge(edges, 0, 4); AddEdge(edges, 1, 2); AddEdge(edges, 1, 3); AddEdge(edges, 1, 4); AddEdge(edges, 2, 3); AddEdge(edges, 3, 4); BFSHelper(edges, V); } } // This code is contributed by cavi4762.