题目:https://dsa.cs.tsinghua.edu.cn/oj/problem.shtml?id=1148
分析:
题目不难,但要注意题目涉及的图是无向图,所以建议按照邓公教材的风格,使用三个状态来表示当前顶点未发现,即从未入队,已发现,即在队中,已访问,即入队过,在主函数中调用即可,注意要使用邻接表。
代码:
#include<iostream>
#define MAXSIZE 10001
#define UNDISCOVERED 0
#define DISCOVERED 1
#define VISITED 2
using namespace std;
struct EdgeNode{
int vsub;
EdgeNode* succ;
};
struct VertexNode{
EdgeNode* fstEdge;
};
VertexNode adjList[MAXSIZE];
int queue[MAXSIZE],status[MAXSIZE],front=0,rear=0,i,j,k,m,n;//注意全局数组元素自动初始化为0
int BFS(int v){
queue[rear]=v;rear=(rear+1)%MAXSIZE;
status[v]=DISCOVERED;//当前顶点已发现,入队
while(front!=rear){
v=queue[front];front=(front+1)%MAXSIZE;
for(EdgeNode* e=adjList[v].fstEdge;e;e=e->succ)
switch(status[e->vsub]){
case UND

这篇博客介绍了清华在线学堂的一道PA3-1无线广播问题,强调了题目涉及的图是无向图。博主建议使用三种状态表示节点的探索过程,并提供了解题思路,包括采用邻接表来解决问题。

4011

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



