题目描述
也没啥描述的
算法思想
也算是暴力递归,但是有时候dfs会超时的bfs不会超时
核心代码实现
int bfs(int x){
int cnt=0;
queue<Node> q; //建立队列
q.push(Node{0,x}); //放入首个元素
while(!q.empty()){ //递归,直到队列里没有元素后跳出
Node temp;
temp=q.front(); //获得队首元素
q.pop(); //移出队首元素
cnt++; //数量加一
if(temp.level<l){
for(int i=0;i<ma[temp.data].size();i++){ //递归所有情况
if(visited[ma[temp.data][i]]==0){ //判断是否被选过
visited[ma[temp.data][i]]=1; //标记为被选过
q.push(Node{temp.level+1,ma[temp.data][i]}); //放入这个元素到队尾
}
}
}
}
return cnt-1; //返回数量
}
例题
PAT甲: 1076 Forwards on Weibo (30 分)(dfs 27分)(bfs 30分)
PAT甲: 1091 Acute Stroke (30 分)(dfs 27分)(bfs 30分)