当前位置: 首页 > news >正文

榆林建设银行的网站网站建设客户需求调查问卷

榆林建设银行的网站,网站建设客户需求调查问卷,国内公司名字可以做国外网站,统一门户网站建设规范并查集的核心功能#xff0c;合并集合#xff0c;查找元素#xff0c;这两个最基本的功能相关题目本文不列举了#xff0c;主要是一些和图相关的#xff1a; 并查集的核心母题 一、连通性检测#xff1a; 问题#xff1a;判断在一个图中#xff0c;任意两点是否连通。…并查集的核心功能合并集合查找元素这两个最基本的功能相关题目本文不列举了主要是一些和图相关的 并查集的核心母题 一、连通性检测 问题判断在一个图中任意两点是否连通。应用这是并查集最基本的功能通过 find 操作可以判断两个节点是否属于同一个连通分量。衍生问题 判断两点是否在同一个连通分量中。找出图中有多少个连通分量即独立的子图。在图中动态地添加边并检查连通性。 无向图任意两点是否连通 问题代码 注释中输入输出很清晰了 关键如果在一个连通分量中~根节点会是一样的 ~find值相同 #includeiostream using namespace std;const int MAXN 100010; int fa[MAXN]; // 并查集的父节点数组// 初始化每个节点都是自己的父节点 void init(int n) {for(int i 1; i n; i)fa[i] i; }// 查找根节点并进行路径压缩 int find(int x) {if (fa[x] ! x) {fa[x] find(fa[x]); }return fa[x]; }// 合并两个节点所在的集合 void join(int x, int y) {int fx find(x);int fy find(y);if(fx ! fy)fa[fx] fy; // 将其中一个根节点指向另一个 }// 判断两点是否连通bool isConnected(int x, int y) {return find(x) find(y); }int main() {int n, m;cin n m; // n为节点数m为边数init(n); // 初始化并查集// 读取每条边并进行合并for(int i 0; i m; i) {int u, v;cin u v;join(u, v);}// 查询两点是否连通int a, b;cin a b;if(isConnected(a, b))cout Yes, they are connected. endl;elsecout No, they are not connected. endl;return 0; } 二、连通分量的管理 问题管理图中的多个连通分量支持动态的合并与查询操作。应用这是并查集的核心应用使用 union 操作可以将两个连通分量合并通过 find 操作查询某个节点所属的连通分量。衍生问题 求解有多少个连通分量。在合并过程中检测图中是否形成了环。处理动态连通性问题如动态添加或删除边。判断图是否为树只有一个连通分量且无环。 求解连通分量个数 问题代码 关键计算有多少个根节点就可以了所以遍历所有的点看有多少个点满足fa[i]i #includeiostream using namespace std;const int MAXN 100010; int fa[MAXN]; // 并查集的父节点数组// 初始化每个节点都是自己的父节点 void init(int n) {for(int i 1; i n; i)fa[i] i; }// 查找根节点并进行路径压缩 int find(int x) {if (fa[x] ! x) {fa[x] find(fa[x]); }return fa[x]; }// 合并两个节点所在的集合 void join(int x, int y) {int fx find(x);int fy find(y);if(fx ! fy)fa[fx] fy; // 将其中一个根节点指向另一个 }int main() {int n, m;cin n m; // n为节点数m为边数init(n); // 初始化并查集// 读取每条边并进行合并for(int i 0; i m; i) {int u, v;cin u v;join(u, v);}// 计算连通分量的数量int components 0;for(int i 1; i n; i) {if(find(i) i) // 如果节点是它自己的父节点说明它是一个连通分量的根components;}cout Number of connected components: components endl;return 0; } 三、环检测 问题判断在无向图中是否存在环。应用在合并过程中如果发现两个节点已经在同一个连通分量中那么在添加这条边之后会形成环。衍生问题 在无向图中检测是否有环。在最小生成树算法中Kruskal通过避免环的方式构造最小生成树。删除图中冗余的边以防止形成环如冗余连接问题。 是否有环 问题代码 关键是在join函数中进行判断正常的逻辑是找到根节点如果不同就把一个的father指向另一个而现在是如果相同就说明存在还如果需要判断的时候就直接返回true就可以啦 #includeiostream using namespace std;const int MAXN 100010; int fa[MAXN]; // 并查集的父节点数组// 初始化每个节点都是自己的父节点 void init(int n) {for(int i 1; i n; i)fa[i] i; }// 查找根节点并进行路径压缩 int find(int x) {if (fa[x] ! x) {fa[x] find(fa[x]); }return fa[x]; }// 合并两个节点所在的集合bool join(int x, int y) {int fx find(x);int fy find(y);if(fx fy)return true; // 如果两个节点的根节点相同说明形成了环fa[fx] fy;return false; }int main() {int n, m;cin n m; // n为节点数m为边数init(n); // 初始化并查集bool hasCycle false;// 读取每条边并进行合并for(int i 0; i m; i) {int u, v;cin u v;if(join(u, v)) {hasCycle true; // 一旦发现环标记并停止后续检测}}// 输出是否存在环if(hasCycle)cout Graph contains a cycle. endl;elsecout Graph does not contain a cycle. endl;return 0; } 例题 Problem Description 上次Gardon的迷宫城堡小希玩了很久见Problem B现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样首先她认为所有的通道都应该是双向连通的就是说如果有一个通道连通了房间A和B那么既可以通过它从房间A走到房间B也可以通过它从房间B走到房间A为了提高难度小希希望任意两个房间有且仅有一条路径可以相通除非走了回头路。小希现在把她的设计图给你让你帮忙判断她的设计图是否符合她的设计思路。比如下面的例子前两个是符合条件的但是最后一个却有两种方法从5到达8。 Input 输入包含多组数据每组数据是一个以0 0结尾的整数对列表表示了一条通道连接的两个房间的编号。房间的编号至少为1且不超过100000。每两组数据之间有一个空行。 整个文件以两个-1结尾。 Output 对于输入的每一组数据输出仅包括一行。如果该迷宫符合小希的思路那么输出Yes否则输出No。 Sample Input 6 8 5 3 5 2 6 4 5 6 0 0 8 1 7 3 6 2 8 9 7 5 7 4 7 8 7 6 0 0 3 8 6 8 6 4 5 3 5 6 5 2 0 0 -1 -1 Sample Output Yes Yes No 分析判断两个点1.是不是只有一个连通分量整体是一个连通图2.是否有环因为在图中使用点不一定是0开始逐一往上所以需要visit数组来辅助我们判断 #includeiostream #includestdio.h #includestring.h using namespace std;int vis[1000010], fa[1000010]; int m, n, flag;// 初始化每个节点的父节点为其自身 void init() {for(int i 1; i 1000010; i)fa[i] i; }// 查找根节点并进行路径压缩 int find(int x) {return fa[x] x ? x : (fa[x] find(fa[x])); }// 合并两个节点所属的集合 void join(int x, int y) {int fx find(x);int fy find(y);if(fx fy)flag 1; // 出现环elsefa[fx] fy; }int main() {while(scanf(%d%d, n, m) ! EOF) {if(m 0 n 0) {printf(Yes\n);continue; // 空树自动满足条件}if(m -1 n -1) break; // 结束输入memset(vis, 0, sizeof(vis)); // 重置访问数组init();flag 0;vis[n] vis[m] 1; // 标记访问过的节点join(n, m);// 继续读入其他边//首先执行 scanf然后判断 a | b 的值如果 a 或 b 不为 0则进入循环。while(scanf(%d%d, n, m), n | m) {vis[n] vis[m] 1;join(m, n);}int s 0;// 检查连通分量的数量for(int i 1; i 1000010; i) {if(fa[i] i vis[i])s;if(s 1) { // 超过一个连通分量不是树flag 1;break;}}// 输出结果printf(flag ? No\n : Yes\n);}return 0; }
http://www.hkea.cn/news/14524728/

相关文章:

  • 做网站客源佛山网站seo公司
  • 网站专题报道页面怎么做的佛山 网站开发
  • 南昌网站推广网站建设与开发 教材
  • 135网站模板南阳网站建设培训学校
  • 结构设计网站推荐设计制作个人网站
  • 灯饰模板网站上海品牌logo设计公司
  • 做门户网站需要准备什么allintitle:湛江网站建设 seo
  • 做暧昧在线网站做旅游海报的软件或是网站
  • 中山技术支持中山网站建设郴州网站建设公司官网
  • 杭州网站开发凡客大兴区网站建设公司
  • 做番号网站犯法吗网站服务类型怎么选
  • 营销网站定位广州第一网站
  • 单页面网站怎么做的南宁百度网站建设公司
  • 韩都衣舍网站建设方案建程网会员
  • 网站添加icp信息郴州建设网站的公司
  • 查看网站的注册时间柳州做网站有kv
  • 个人网站可以备案了吗团购网站APP怎么做
  • 备案号新增网站嘉伟网络智能建站
  • 网站建设所采用的技术网站链接安全检测
  • 网站建设活动方案wordpress 本地 域名绑定
  • 学校网站怎么做推广方案私密浏览器免费版的优缺点
  • 珠海市住房城乡建设局网站wordpress移动主题puck
  • 站长统计免费下载wordpress是h5页面
  • 网站制作关键技术网站后台登陆密码破解
  • 网站的工作简报怎么做那个网站可以找人做兼职
  • 天津网站建设技术支持网站建设流程分几步
  • 官方网站建设的四个步骤云服务器
  • 江门搜索引擎网站推广枞阳做网站的
  • 如何成为一个优秀的网站设计师网站代备案便宜
  • 网站制作 客户刁难做网站诱导网站