nurzain-pradana

Source Code Breadth-First Search (BFS)

Nov 23rd, 2025
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.48 KB | Source Code | 0 0
  1. package id.ac.ut.tugaspraktikumstrukturdata;
  2.  
  3. import java.util.Iterator;
  4. import java.util.LinkedList;
  5.  
  6. /**
  7.  *
  8.  * @author Nur Zain Pradana
  9.  * https://www.linkedin.com/nurzainpradana
  10.  */
  11.  
  12.  
  13. public class GraphBFS {
  14.  
  15.     private int V;
  16.     private LinkedList<Integer> adj[];
  17.  
  18.     GraphBFS(int v) {
  19.         V = v;
  20.         adj = new LinkedList[v];
  21.         for (int i = 0; i < v; i++) {
  22.             adj[i] = new LinkedList<>();
  23.         }
  24.     }
  25.  
  26.     void addEdge(int v, int w) {
  27.         adj[v].add(w);
  28.     }
  29.  
  30.     void BFS(int s, int target) {
  31.         boolean visited[] = new boolean[V];
  32.         LinkedList<Integer> queue = new LinkedList<>();
  33.  
  34.         visited[s] = true;
  35.         queue.add(s);
  36.  
  37.         System.out.println("Mulai BFS dari vertex: " + s);
  38.         System.out.println("Mencari angka: " + target);
  39.         System.out.println("Tandai " + s + " sebagai visited dan memasukkan ke queue");
  40.  
  41.         while (!queue.isEmpty()) {
  42.             System.out.println("\nQueue saat ini : " + queue);
  43.  
  44.             s = queue.poll();
  45.             System.out.println("Ambil dari queue (pool): " + s);
  46.             System.out.println("Kunjungi node: " + s);
  47.  
  48.             // Cek apakah node saat ini adalah target
  49.             if (s == target) {
  50.                 System.out.println("TARGET ditemukan! Angka " + target + " ada dalam graf.");
  51.                 return;
  52.             }
  53.  
  54.             Iterator<Integer> i = adj[s].listIterator();
  55.  
  56.             while (i.hasNext()) {
  57.                 int n = i.next();
  58.  
  59.                 System.out.println("  Cek tetangga: " + n);
  60.  
  61.                 if (!visited[n]) {
  62.                     visited[n] = true;
  63.                     queue.add(n);
  64.                     System.out.println("    -> Belum Visited, tandai visited dan masukkan ke queue: " + n);
  65.  
  66.                 } else {
  67.                     System.out.println("    -> Sudah visited, lewati.");
  68.                 }
  69.             }
  70.         }
  71.  
  72.         System.out.println("\nTARGET " + target + " TIDAK ditemukan di graf.");
  73.  
  74.     }
  75.  
  76.     public static void main(String args[]) {
  77.         GraphBFS g = new GraphBFS(6);
  78.  
  79.         g.addEdge(0, 1);
  80.         g.addEdge(0, 2);
  81.         g.addEdge(1, 3);
  82.         g.addEdge(1, 4);
  83.         g.addEdge(2, 4);
  84.         g.addEdge(3, 5);
  85.         g.addEdge(4, 5);
  86.         g.addEdge(5, 5);
  87.        
  88.         int start = 0;
  89.         int cariN = 4;
  90.        
  91.         System.out.println("BFS dengan vertex awal " + start);
  92.         g.BFS(start, cariN);
  93.  
  94.     }
  95.  
  96. }
  97.  
Add Comment
Please, Sign In to add comment