Depth First Search(DFS)

#include<bits/stdc++.h>
using namespace std;
#define WHITE 1
#define GRAY 2
#define BLACK 3

int node, edge;
int a[100][100];
int color[100];

void dfsvisit(int x)
{
    color[x] = GRAY;
    for(int i=0; i<node; i++)
    {
        if(a[x][i] == 1)
        {
            if(color[i] == WHITE)
                dfsvisit(i);
        }
    }
    color[x] = BLACK;

    cout << x << " Node is BLACK." << endl;
}

void dfs()
{
    for(int i=0; i<node; i++)
        color[i] = WHITE;

    for(int i=0; i<node; i++)
    {
        if(color[i] == WHITE)
            dfsvisit(i);
    }
}

int main()
{
    int n1, n2;

    cout << "Enter Node :: ";
    cin >> node;

    cout << "Enter Edge :: ";
    cin >> edge;

    cout << endl << "Enter Adjacent Node : " << endl;
    for(int i=1;i<=edge;i++)
    {
        cin >> n1 >> n2;
        a[n1][n2] = 1;
        a[n2][n1] = 1;
    }

    dfs();

    return 0;
}

Comments