公司网站建设需要哪些餐饮装修

张小明 2026/1/19 20:26:52
公司网站建设需要哪些,餐饮装修,上海巴士公司,开阿里巴巴网站建设流程判断二分图 问题描述 存在一个无向图#xff0c;图中有 n 个节点#xff0c;编号从 0 到 n - 1。给你一个二维数组 graph 表示图的邻接表#xff0c;其中 graph[u] 是一个节点数组#xff0c;表示与节点 u 相邻的节点。 如果可以将图中节点分为两组#xff0c;使得每条…判断二分图问题描述存在一个无向图图中有n个节点编号从0到n - 1。给你一个二维数组graph表示图的邻接表其中graph[u]是一个节点数组表示与节点u相邻的节点。如果可以将图中节点分为两组使得每条边的两个节点分别属于不同组则称这个图是二分图。请你判断给定的图是否是二分图。如果是返回true否则返回false。示例输入: graph [[1,2,3],[0,2],[0,1,3],[0,2]] 输出: false 解释: 节点不能分成两组使得每条边的两个节点在不同组。 因为存在奇数长度的环三角形0-1-2-0。 输入: graph [[1,3],[0,2],[1,3],[0,2]] 输出: true 解释: 可以将节点分成两组: {0, 2} 和 {1, 3}。算法思路经典的图着色问题可以用深度优先搜索DFS或广度优先搜索BFS解决。二分图着色可以用两种颜色对图进行着色使得相邻节点颜色不同环图中不存在奇数长度的环奇环等价图是二分图 图中所有环的长度都是偶数方法图着色为每个节点分配颜色0或1相邻节点必须颜色不同冲突检测如果发现相邻节点颜色相同则不是二分图连通分量图可能不连通需要检查所有连通分量代码实现方法一DFSclassSolution{/** * 使用DFS判断图是否为二分图 * * param graph 邻接表表示的无向图 * return true表示是二分图false表示不是 */publicbooleanisBipartite(int[][]graph){intngraph.length;// color[i] 表示节点i的颜色-1表示未着色0和1表示两种颜色int[]colornewint[n];Arrays.fill(color,-1);// 遍历所有节点处理可能的多个连通分量for(inti0;in;i){// 如果节点未着色从该节点开始DFS着色if(color[i]-1){if(!dfs(graph,color,i,0)){returnfalse;}}}returntrue;}/** * DFS着色函数 * * param graph 邻接表 * param color 颜色数组 * param node 当前节点 * param c 当前要着的颜色 * return true表示着色成功false表示发现冲突 */privatebooleandfs(int[][]graph,int[]color,intnode,intc){// 为当前节点着色color[node]c;// 遍历所有相邻节点for(intneighbor:graph[node]){if(color[neighbor]-1){// 相邻节点未着色递归着色为相反颜色if(!dfs(graph,color,neighbor,1-c)){returnfalse;}}elseif(color[neighbor]c){// 相邻节点已着色且颜色相同发现冲突returnfalse;}// 如果相邻节点颜色不同color[neighbor] 1 - c继续检查}returntrue;}}方法二BFSimportjava.util.*;classSolution{/** * 使用BFS判断图是否为二分图 * * param graph 邻接表表示的无向图 * return true表示是二分图false表示不是 */publicbooleanisBipartite(int[][]graph){intngraph.length;int[]colornewint[n];Arrays.fill(color,-1);// 遍历所有节点for(inti0;in;i){if(color[i]-1){if(!bfs(graph,color,i)){returnfalse;}}}returntrue;}/** * BFS着色函数 * * param graph 邻接表 * param color 颜色数组 * param start 起始节点 * return true表示着色成功false表示发现冲突 */privatebooleanbfs(int[][]graph,int[]color,intstart){QueueIntegerqueuenewLinkedList();queue.offer(start);color[start]0;// 起始节点着色为0while(!queue.isEmpty()){intnodequeue.poll();intcurrentColorcolor[node];// 遍历相邻节点for(intneighbor:graph[node]){if(color[neighbor]-1){// 未着色着相反颜色color[neighbor]1-currentColor;queue.offer(neighbor);}elseif(color[neighbor]currentColor){// 颜色冲突returnfalse;}}}returntrue;}}方法三并查集classSolution{/** * 使用并查集判断二分图 * 核心思想每个节点u和它的所有邻居v应该在不同的集合中 * 将u的所有邻居合并到同一个集合然后检查u是否与该集合连通 */publicbooleanisBipartite(int[][]graph){intngraph.length;UnionFindufnewUnionFind(n);// 遍历每个节点for(intu0;un;u){int[]neighborsgraph[u];if(neighbors.length0)continue;// 将u的所有邻居合并到同一个集合intfirstNeighborneighbors[0];for(inti1;ineighbors.length;i){uf.union(firstNeighbor,neighbors[i]);}// 检查u是否与邻居集合连通如果是则不是二分图if(uf.isConnected(u,firstNeighbor)){returnfalse;}}returntrue;}/** * 并查集实现 */classUnionFind{privateint[]parent;privateint[]rank;publicUnionFind(intn){parentnewint[n];ranknewint[n];for(inti0;in;i){parent[i]i;rank[i]0;}}publicintfind(intx){if(parent[x]!x){parent[x]find(parent[x]);// 路径压缩}returnparent[x];}publicvoidunion(intx,inty){introotXfind(x);introotYfind(y);if(rootX!rootY){// 按秩合并if(rank[rootX]rank[rootY]){parent[rootX]rootY;}elseif(rank[rootX]rank[rootY]){parent[rootY]rootX;}else{parent[rootY]rootX;rank[rootX];}}}publicbooleanisConnected(intx,inty){returnfind(x)find(y);}}}算法分析时间复杂度DFS/BFSO(V E)V是节点数E是边数并查集O(E × α(V))α为常数空间复杂度DFSO(V) - 递归栈空间BFSO(V) - 队列空间并查集O(V) - parent和rank数组算法过程1graph [[1,3],[0,2],[1,3],[0,2]]二分图DFS过程从节点0开始着色为0节点1和3着色为1从节点1节点2着色为0从节点3检查节点2已着色为0与节点3的1不同所有节点着色成功返回true着色结果组0{0, 2}组1{1, 3}2graph [[1,2,3],[0,2],[0,1,3],[0,2]]非二分图DFS过程从节点0开始着色为0节点1、2、3着色为1从节点1检查节点2已着色为1与节点1相同发现冲突返回false冲突原因存在三角形环0-1-2-0奇数长度环测试用例publicstaticvoidmain(String[]args){SolutionsolutionnewSolution();// 测试用例1标准二分图int[][]graph1{{1,3},{0,2},{1,3},{0,2}};System.out.println(Test 1: solution.isBipartite(graph1));// true// 测试用例2非二分图奇环int[][]graph2{{1,2,3},{0,2},{0,1,3},{0,2}};System.out.println(Test 2: solution.isBipartite(graph2));// false// 测试用例3单个节点int[][]graph3{{}};System.out.println(Test 3: solution.isBipartite(graph3));// true// 测试用例4两个节点一条边int[][]graph4{{1},{0}};System.out.println(Test 4: solution.isBipartite(graph4));// true// 测试用例5三个节点形成三角形int[][]graph5{{1,2},{0,2},{0,1}};System.out.println(Test 5: solution.isBipartite(graph5));// false// 测试用例6四个节点形成正方形int[][]graph6{{1,3},{0,2},{1,3},{0,2}};System.out.println(Test 6: solution.isBipartite(graph6));// true// 测试用例7不连通图多个连通分量int[][]graph7{{1},{0},{3},{2}};System.out.println(Test 7: solution.isBipartite(graph7));// true// 测试用例8不连通图包含奇环int[][]graph8{{1,2},{0,2},{0,1},{4},{3}};System.out.println(Test 8: solution.isBipartite(graph8));// false// 测试用例9空图int[][]graph9{};System.out.println(Test 9: solution.isBipartite(graph9));// true// 测试用例10星型图int[][]graph10{{1,2,3,4},{0},{0},{0},{0}};System.out.println(Test 10: solution.isBipartite(graph10));// true}关键点二分图节点可分为两个互斥集合每条边的两个端点属于不同集合着色策略使用两种颜色0和1相邻节点必须颜色不同颜色数组初始值为-1表示未访问连通分量图可能不连通需要遍历所有节点每个连通分量都要是二分图冲突检测发现相邻节点同色立即返回false不需要继续处理其他部分图邻接表形式graph[u]包含u的所有邻居无向图如果u在graph[v]中则v也在graph[u]中常见问题为什么奇数长度的环会导致不是二分图奇环中从任意节点开始着色最终会回到起始节点且颜色冲突偶环可以成功着色奇环不行并查集每个节点u的邻居应该在同一集合中u本身不应该与该集合连通如果连通说明存在奇环
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

商家网站建设孝感网站建设孝感

终极指南:5步搞定Vue-Vben-Admin桌面应用开发 【免费下载链接】vue-vben-admin 项目地址: https://gitcode.com/gh_mirrors/vue/vue-vben-admin 你是否曾遇到过这样的困扰?精心开发的Vue项目只能在浏览器中运行,想要打包成桌面应用却…

张小明 2026/1/17 20:21:51 网站建设

网站建设很简单南通网站制作设计

摘要 随着互联网技术的快速发展和智能家居市场的持续扩张,传统家电销售模式已无法满足消费者对便捷性、个性化和高效服务的需求。企业级家电销售展示平台管理系统应运而生,旨在通过数字化手段整合家电销售的全流程,提升用户体验和运营效率。该…

张小明 2026/1/17 20:21:52 网站建设

外包公司做的网站类似凡科互动的网站

AvaloniaUI NativeControlHost跨平台开发终极指南:Windows与Linux平台差异完整解决方案 【免费下载链接】Avalonia AvaloniaUI/Avalonia: 是一个用于 .NET 平台的跨平台 UI 框架,支持 Windows、macOS 和 Linux。适合对 .NET 开发、跨平台开发以及想要使用…

张小明 2026/1/17 20:21:55 网站建设

网站建设维护论文电商设计师常用的网站

YOLO开源社区最火项目TOP10,全部支持GPU加速 在智能制造、城市大脑和自动驾驶等前沿领域,实时视觉感知正成为系统决策的“眼睛”。而在这双眼睛背后,YOLO系列模型几乎无处不在——从工厂流水线上的缺陷检测,到十字路口的车流统计&…

张小明 2026/1/17 20:21:55 网站建设

德州做网站最好的公司包头手机网站建设

基于单片机的智能水族箱控制系统设计 一、系统总体设计 基于单片机的智能水族箱控制系统以“精准调控、生态平衡、操作便捷”为核心目标,解决传统水族箱依赖人工维护、水质波动大、生物存活率低的问题,适配中小型家庭观赏水族箱(50-200L&am…

张小明 2026/1/17 20:21:56 网站建设

自建站seo如何做网站jquery在线优化

还在为Home Assistant插件下载缓慢而烦恼吗?HACS-China作为专为中国用户优化的智能家居集成解决方案,通过本地化服务网络彻底解决了插件管理的核心痛点。本指南将带你从入门到精通,全面掌握这款强大工具的使用技巧。 【免费下载链接】integra…

张小明 2026/1/17 20:21:56 网站建设