我是图表的新手,刚开始练习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);
}