一个广搜解决,easy
#include <iostream>
#include <queue>
using namespace std;
int main() {
int n,m,A;
cin>>n>>A>>m;
int i,j,k;
vector< vector<int> > v(n);
vector< int > flag(n,0);
queue< int > q;
for(i=0;i<m;i++)
{
int l,r;
char douhao;
cin>>l>>douhao>>r;
v[l].push_back(r);
v[r].push_back(l);
}
q.push(A);
flag[A]=1;
int total=0;
while(!q.empty())
{
int tem=q.front();
q.pop();
for(j=0;j<v[tem].size();j++)
{
if(flag[v[tem][j]]==0)
{
flag[v[tem][j]]=1;
q.push(v[tem][j]);
total++;
}
}
}
cout << total - v[A].size() << endl;
return 0;
}
广搜算法详解与实现
本文深入探讨了广度优先搜索算法(BFS)的基本原理和应用,通过一个具体的编程实例,展示了如何使用C++实现广搜算法。文章首先介绍了广搜算法在图遍历中的作用,然后详细解析了代码实现过程,包括数据结构的选择和算法流程的设计。最后,通过运行实例验证了算法的有效性和正确性。
2260

被折叠的 条评论
为什么被折叠?



