我提交时遇到运行时错误 - SIGSEGV

时间:2016-08-07 12:29:54

标签: c++ algorithm breadth-first-search

我是图表的新手,刚开始练习bfs。 https://www.hackerearth.com/practice/algorithms/graphs/breadth-first-search/tutorial/

当我编译我的问题时,它运行没有问题但是当我提交它时,它会抛出错误。 我的代码:

#include <iostream>
#include <list>
using namespace std;


class Graph{
    int V;
    list<int>*adj;

    public:
    Graph(int v);
    void addedge(int u,int v);
    void bfs(int s);

};

Graph::Graph(int v)
{
    this->V=v;
    adj=new list<int>[v];
};

void Graph:: addedge(int u,int v)
{
    adj[u].push_back(v);
    adj[v].push_back(u);
}

void Graph:: bfs(int s)
{
bool *visited=new bool[V];

   for(int i=0;i<V;i++)
       visited[i]=false;

   list<int>queue;
   visited[1]=true;

   int temp;
   queue.push_back(1);

   int curr_level=1;

   list<int>::iterator i;

   int counter=1;
   //int flag=0;
   int result=0;
   int count=0;
   while(!queue.empty())
   {
     temp=queue.front();
     queue.pop_front();
     counter--;


     for(i=adj[temp].begin();i!=adj[temp].end();++i)
     {
        if(!visited[*i])
        {
            visited[*i]=true;
            queue.push_back(*i);
        }
        count++;
     }


  if(counter>=0)
  {
    result+=count;
    count=0;
  }
  if(counter==0)
  {
     curr_level++;
     counter=result;
  }

  if(curr_level==s)
  {
    break;
   }

  }
  cout<<result<<endl;
}


int main()
{
    int n;
    cin>>n;
    Graph g(n);
    int x,y;
    n--;
    while(n--)
    {
      cin>>x>>y;
      g.addedge(x,y);
     }
     int p;
     cin>>p;
     if(p==1)
        return 1;
     else
        g.bfs(p);
}

0 个答案:

没有答案