图的广度优先遍历

#include <iostream>
#include <vector>
#include <queue>
using namespace std;const int MAXV = 1000;
const int INF = 1000000000; //下标代表点,数组元素代表连接的点 
//图的邻接表 
vector<int> Adj[MAXV];
//顶点数 
int n;//DFS 如果顶点i已经被访问,则vis[i]=true,初始值为false 
bool vis[MAXV] = {false};//BFS 
bool inq[MAXV] =  { false };//u:当前访问的顶点编号
//depth为深度 
void DFS(int u,int depth)
{//输出,并设置顶点已经被访问 cout << u ;vis[u] = true;for(int i=0;i<Adj[u].size();i++){//与u相接的顶点 int v = Adj[u][i];//如果没有被访问 if(vis[v] == false){DFS(v,depth + 1);}}} //测试DFS int main1(){Adj[0].push_back(1);Adj[0].push_back(2);Adj[1].push_back(0);Adj[1].push_back(2);Adj[1].push_back(3);Adj[1].push_back(4);Adj[2].push_back(0);Adj[2].push_back(1);Adj[2].push_back(4);Adj[3].push_back(1);Adj[3].push_back(4);Adj[3].push_back(5);Adj[4].push_back(1);Adj[4].push_back(2);Adj[4].push_back(3);Adj[4].push_back(5);Adj[5].push_back(1);Adj[5].push_back(4);DFS(0,1);return 0;}//遍历单个连通块 void BFS(int u){queue<int> q;q.push(u);inq[u] = true;while(!q.empty()){int u = q.front();cout << u ;q.pop();for(int i=0;i<Adj[u].size();i++){int v = Adj[u][i];if(inq[v] == false){q.push(v);inq[v] = true;//标记v为已被加入过队列 
             }}} }//遍历所有连通量void BFSTrave(){for(int u=0;u<n;u++){if(inq[u] == false){BFS(u);}}} //BFS
int main(){Adj[0].push_back(1);Adj[0].push_back(2);Adj[1].push_back(0);Adj[1].push_back(2);Adj[1].push_back(3);Adj[1].push_back(4);Adj[2].push_back(0);Adj[2].push_back(1);Adj[2].push_back(4);Adj[3].push_back(1);Adj[3].push_back(4);Adj[3].push_back(5);Adj[4].push_back(1);Adj[4].push_back(2);Adj[4].push_back(3);Adj[4].push_back(5);Adj[5].push_back(1);Adj[5].push_back(4);BFS(0);return 0;}

 题目练习:PAT A1076 Forwards on Weibo

#include <stdio.h>
#include <string.h> 
#include <vector>
#include <queue>
#include <iostream> 
using namespace std;const int MAXV = 1010;struct Node
{int id;int layer;};//邻接表 vector<Node> Adj[MAXV];//是否被加入过队列 bool inq[MAXV] = {false};//s为起始结点,L为层数上限 int BFS(int s,int L){int numForward = 0;//转发数queue<Node> q; Node start;//定义起始结点start.id = s;start.layer = 0; q.push(start);inq[start.id] = true;while(!q.empty()){//取出队首结点 Node topNode = q.front();q.pop();//取出队首结点的编号 int u = topNode.id;for(int i=0; i < Adj[u].size();i++){Node next = Adj[u][i];next.layer = topNode.layer + 1;//如果next的编号未被加入过队列,且next的层次不超过上限Lif(inq[next.id] == false && next.layer <= L){q.push(next);inq[next.id] = true;numForward++;//转发数加1 
             } } } return numForward; } int main(){Node user;//n为人数 L为层数  numFollow为关注的人数  idFollow为关注的人 int n,L,numFollow,idFollow;cin >> n >> L;for(int i=1;i<=n;i++){user.id = i;cin >> numFollow;for(int j=0;j<numFollow;j++){cin >> idFollow;//下标为点,元素为连接的点 
            Adj[idFollow].push_back(user); }} //numQuery为查询的个数 int numQuery,s; cin >> numQuery;for(int i=0;i<numQuery;i++){memset(inq,false,sizeof(inq));cin >> s;int numForward = BFS(s,L);cout << numForward << endl;} } 

 

 

转载于:https://www.cnblogs.com/xiaochi/p/10409964.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3.8 平均数

求若干整数的平均数&#xff0c;结果保留三位小数。 输入样例&#xff1a;第一个数字代表数据个数 3 6 5 18 4 1 2 3 4 输出样例&#xff1a; 9.667 2.500 #include<iostream> #include<fstream> using namespace std;int main() {ifstream cin("test.t…

从决策树学习谈到贝叶斯分类算法、EM、HMM

引言 最近在面试中(点击查看&#xff1a;我的个人简历&#xff0c;求职意向&#xff0c;择司标准)&#xff0c;除了基础 & 算法 & 项目之外&#xff0c;经常被问到或被要求介绍和描述下自己所知道的几种分类或聚类算法(当然&#xff0c;这完全不代表你将来的面试中会遇…

gdb调试的基本使用

GDB调试 启动程序准备调试 GDB yourpram 或者 先输入GDB 然后输入 file yourpram然后使用run或者r命令开始程序的执行,也可以使用 run parameter将参数传递给该程序参数列表  命令 命令缩写 命令说明 list l 显示多行源代码 break b 设置断点,程序运行到断点的位置会停…

3.9 对称三位素数

素数&#xff1a;只能被1和自身整除 判断一个数是否是素数&#xff1a;判断从2到sqrt(n)的整数中是否有其约数 判断一个数是否是三位素数。 输入样例&#xff1a; 11 101 272 输出样例&#xff1a; No Yes No #include<iostream> #include<fstream> #incl…

决策树的过拟合问题

决策树的过拟合问题决策树是一种分类器&#xff0c;通过ID3&#xff0c;C4.5和CART等算法可以通过训练数据构建一个决策树。但是&#xff0c;算法生成的决策树非常详细并且庞大&#xff0c;每个属性都被详细地加以考虑&#xff0c;决策树的树叶节点所覆盖的训练样本都是“纯”的…

计算机网络与协议

计算机网络&#xff1a; TCP/IP中只要是能够设定IP地址的计算机就成为主机 网络按其规模可分为&#xff1a; WAN&#xff08;广域网&#xff09;&#xff1a;覆盖多个远距离区域的远程网络 MAN&#xff08;城域网&#xff09;&#xff1a;比广域网小一级&#xff0c;连接整个城…

3.10 十进制转换为二进制

将十进制整数转换成二进制数 对于每个n&#xff0c;以11位的宽度右对齐输出n值&#xff0c;然后输出"-->"&#xff0c;然后输出二进制数。 输入样例&#xff1a; 2 0 -12 1 输出样例&#xff1a; 2-->10 0-->0 -12-->-1100 1-->1 #include<…

对线性回归、逻辑回归、各种回归的概念学习

回归问题的条件/前提&#xff1a; 1&#xff09; 收集的数据 2&#xff09; 假设的模型&#xff0c;即一个函数&#xff0c;这个函数里含有未知的参数&#xff0c;通过学习&#xff0c;可以估计出参数。然后利用这个模型去预测/分类新的数据。 1. 线性回归 假设 特征 和 结果 都…

redis的源码编译安装+发布订阅+RDB持久化

redis的源码编译安装发布订阅RDB持久化转载于:https://www.cnblogs.com/zwq-/p/10420455.html

Shell基础1

0 Shell基础 0.1 Shell是什么 0.1.1 Shell是什么 Shell是一个命令行解释器&#xff0c;它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序&#xff0c;用户可以用Shell来启动、挂起、停止甚至编写一些程序。 硬件 <-内核 <- Shell命令解释器<-外层应…

centos7自带数据库MariaDB重启和修改密码

1&#xff1a;MariaDB和mysql差不多是mysql的一个分支&#xff0c;完全兼容mysql的命令。 2&#xff1a;centos 7 中自带MariaDB&#xff0c; 需要在centos中安装mysql的时候就需要多注意了。 3&#xff1a;启动 停止 重启 MariaDB systemctl start mariadb.service #启动Maria…

Shell基础2

0.12 数值运算与运算符 aa11 bb22 cc$aa$bb echo $cc #1122&#xff0c;因为变量默认是字符串类型 1、declare声明变量类型 declare /- 选项 变量名 选项&#xff1a; - 给变量设定类型属性 取消变量的类型属性 -i 将变量声明为整数型 -x 将变量声明为环境变量 …

XGBoost入门及实战

kaggle比赛必备算法XGBoost入门及实战 xgboost一直在kaggle竞赛江湖里被传为神器&#xff0c;它在对结构化数据的应用占据主导地位&#xff0c;是目前开源的最快最好的工具包&#xff0c;与常见的工具包算法相比速度提高了10倍以上&#xff01; XGBoost is an implementation o…

几个常用算法的适应场景及其优缺点

机器学习算法太多了&#xff0c;分类、回归、聚类、推荐、图像识别领域等等&#xff0c;要想找到一个合适算法真的不容易&#xff0c;所以在实际应用中&#xff0c;我们一般都是采用启发式学习方式来实验。通常最开始我们都会选择大家普遍认同的算法&#xff0c;诸如SVM&#x…

p1012拼数题解

#include<iostream> #include<algorithm> using namespace std; bool cmp(string b,string a) {return ba>ab;}//灵魂在这 int main() {string a[21];int n;cin>>n;for(int i1;i<n;i)cin>>a[i];sort(a1,an1,cmp);for(int i1;i<n;i)cout<&l…

常见算法及问题场景——图

最短路径 现实场景 1、一批货从北京到广州的的最快&#xff0c;或最省钱的走法。 把路线中各城市当作图的顶点&#xff0c;各城市之间的花费时间&#xff0c;或金钱当作边的权重&#xff0c;求两点之间的最短路径。 2、在城市群中建一个仓储基地&#xff0c;建在什么位置可以…

EF ++属性会更新实体

var lastBaby await _babyRepository.FirstOrDefaultAsync(); lastBaby.sort; -- sort原本为1 -- 最终会生成一条语句更新sort字段 exec sp_executesql NSET NOCOUNT ON;UPDATE [Babies] SET [BirthOrder] p0, [LastModificationTime] p1WHERE [Id] p2;SELECT ROWCOUNT; ,N…

分类算法应用场景实例二十则

1 O2O优惠券使用预测 以优惠券盘活老用户或吸引新客户进店消费是O2O的一种重要营销方式。然而随机投放的优惠券对多数用户造成无意义的干扰。对商家而言&#xff0c;滥发的优惠券可能降低品牌声誉&#xff0c;同时难以估算营销成本。个性化投放是提高优惠券核销率的重要技术&am…

Shell03

查看字符数的方法&#xff1a; seq -s " " 100 #以空格为分隔符&#xff0c;输出从1到100 seq 100 #以换行为分隔符 charsseq -s " " 100 echo $chars echo ${#chars} #统计字符数 echo $(expr length "$chars") #统计字符数 echo $cha…

luogu P3244 [HNOI2015]落忆枫音

传送门 md这题和矩阵树定理没半毛钱关系qwq 首先先不考虑有环,一个\(DAG\)个外向树个数为\(\prod_{i2}^{n}idg_i(\)就是\(indegree_i)\),因为外向树每个点入度为一,对于一个点有入度个父亲可选,然后乘法原理起来就是答案 现在可能加一条边会有环,那么答案可以考虑总方案减不合法…