Click here to Skip to main content
15,887,135 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
C++
// Program to print BFS traversal from a given

// source vertex. BFS(int s) traverses vertices

// reachable from s.

#include<iostream>
#include <list>

using namespace std;

// This class represents a directed graph using

// adjacency list representation

class Graph
{
    int V;    // No. of vertices

    // Pointer to an array containing adjacency

    // lists

    list<int> *adj;  

public:

    Graph(int V); // Constructor

    // function to add an edge to graph

    void addEdge(int v, int w);

    // prints BFS traversal from a given source s

    void BFS(int s);
};

Graph::Graph(int V)
{
    this->V = V;

    adj = new list<int>[V];
}

void Graph::addEdge(int v, int w)
{
    adj[v].push_back(w); // Add w to v’s list.
}

void Graph::BFS(int s)
{
    // Mark all the vertices as not visited

    bool *visited = new bool[V];

    for(int i = 0; i < V; i++)

        visited[i] = false;

    // Create a queue for BFS

    list<int> queue;

    // Mark the current node as visited and enqueue it

    visited[s] = true;

    queue.push_back(s);

    // 'i' will be used to get all adjacent

    // vertices of a vertex

    list<int>::iterator i;

    while(!queue.empty())
    {

        // Dequeue a vertex from queue and print it

        s = queue.front();

        cout << s << " ";

        queue.pop_front();

        // Get all adjacent vertices of the dequeued

        // vertex s. If a adjacent has not been visited,

        // then mark it visited and enqueue it

        for (i = adj[s].begin(); i != adj[s].end(); ++i)
        {
            if (!visited[*i])
            {
                visited[*i] = true;

                queue.push_back(*i);
            }
        }
    }
}

// Driver program to test methods of graph class

int main()
{
    // Create a graph given in the above diagram

    Graph g(4);

    g.addEdge(0, 1);

    g.addEdge(0, 2);

    g.addEdge(1, 2);

    g.addEdge(2, 0);

    g.addEdge(2, 3);

    g.addEdge(3, 3);

    cout << "Following is Breadth First Traversal "

         << "(starting from vertex 2) \n";

    g.BFS(2);

    return 0;
}


What I have tried:

Severity	Code	Description	Project	File	Line	Suppression State
Error	LNK2019	unresolved external symbol _WinMain@16 referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)	MIbasco_Project7	C:\Users\Ibascos\source\repos\MIbasco_Project7\MSVCRTD.lib(exe_winmain.obj)	1	


This is the error I'm getting. I'm very new to C++ and I don't have the experience to figure out what I'm doing wrong. I am using VS 2019. I appreciate any help, thank you!
Posted
Updated 12-Dec-20 22:20pm
v2

1 solution

You create a Windows project instead of a Console project. Windows application starts from WinMain() while console application starts from main(). Yours is a console application. You have 2 options to fix it: either recreate a new console application project and copy over your source code or follow the steps below.

  • Right-click on your project in Solution Explorer and click "Properties" on the popup menu.
  • Make sure Configuration and Platform on the Properties Page is same as your current setting.
  • Go to Linker->System
  • On the Subsystem dropdown, change from Windows(/Subsystem:Windows) to Console(/Subsystem:Console)
  • Click Ok to close the Properties Page and rebuild your project.
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900