Anda di halaman 1dari 3

Ketentuan Live Coding:

1. NIM ganjil BFS dan NIM genap DFS


2. Silakan cari source code di internet, dengan ketentuan bebas, boleh memakai library apa pun,
tetapi hanya diperbolehkan dalam bahasa C dan Cpp. Tidak perlu di-compile.
3. Buat Pseudocode dengan bahasa kalian sendiri
Soucecode.cpp
//Nama : Wisnumurti
//NIM : 195150307111007
//Kelas : Teknik Komputer B
//NIM GANJIL = BFS
#include<iostream>
#include <list>
using namespace std;
// a directed graph class
class DiGraph
{
    int V;    // No. of vertices
   
    // Pointer to an array containing adjacency lists
    list<int> *adjList;   
public:
    DiGraph(int V);  // Constructor
   
    // add an edge from vertex v to w
    void addEdge(int v, int w); 
   
    // BFS traversal sequence starting with s ->starting node
    void BFS(int s);  
};
DiGraph::DiGraph(int V)
{
    this->V = V;
    adjList = new list<int>[V];
}
 void DiGraph::addEdge(int v, int w)
{
    adjList[v].push_back(w); // Add w to v’s list.
}
void DiGraph::BFS(int s)
{
    // initially none of the vertices is visited
    bool *visited = new bool[V];
    for(int i = 0; i < V; i++)
        visited[i] = false;
   
    // queue to hold BFS traversal sequence
    list<int> queue;
   
    // Mark the current node as visited and enqueue it
    visited[s] = true;
    queue.push_back(s);
   
    // iterator 'i' to get all adjacent vertices
    list<int>::iterator i;
   
    while(!queue.empty())
    {
        // dequeue the vertex
        s = queue.front();
        cout << s << " ";
        queue.pop_front();
   
        // get all adjacent vertices of popped vertex and process each if
not already visited
        for (i = adjList[s].begin(); i != adjList[s].end(); ++i)
        {
            if (!visited[*i])
            {
                visited[*i] = true;
                queue.push_back(*i);
            }
        }
    }
}
// main program
int main()
{
    // create a graph
    DiGraph dg(5);
    dg.addEdge(0, 1);
    dg.addEdge(0, 2);
    dg.addEdge(0, 3);
    dg.addEdge(1, 2);
    dg.addEdge(2, 4);
    dg.addEdge(3, 3);
    dg.addEdge(4, 4);
   
    cout << "Breadth First Traversal for given graph (with 0 as starting
node): "<<endl;
    dg.BFS(0);
   
    return 0;
}
Pseudocode

Mulai
BFS(G,s)
inisialisasi G sebagai Graph, ‘s’ sebagai sumber node

inisialisasi ‘q’ sebagai queue untuk menyimpan node


q.enqueue (s)
// masukkan node sumber dalam antrian

tandai ‘s’ sebagai node yang sudah dikunjungi.


while (q tidak kosong)
// hapus elemen dari antrian yang simpul-simpulnya berdekatan akan diproses
n = q.dequeue ()

// memproses semua simpul yang berdekatan dari ‘n’


untuk semua tetangga ‘m’ dari ‘n’ dalam Graph G jika ‘w’ tidak dikunjungi
q.enqueue (m)
// Menyimpan ‘m’ di Q untuk selanjutnya mengunjungi node yang berdekatan
tandai ‘m’ sebagai node yang sudah dikunjungi.
Selesai

Anda mungkin juga menyukai