厦门建站公司哪家好网站可以做哪些广告语

张小明 2026/1/13 1:13:13
厦门建站公司哪家好,网站可以做哪些广告语,做网站大记事代码,ftp客户端下载判断二分图 问题描述 存在一个无向图#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进行投诉反馈,一经查实,立即删除!

怎么做死循环网站广州手机网站定制如何

FF14动画跳过终极指南:3分钟掌握副本动画跳过技巧 【免费下载链接】FFXIV_ACT_CutsceneSkip 项目地址: https://gitcode.com/gh_mirrors/ff/FFXIV_ACT_CutsceneSkip 还在为FF14副本中冗长的动画浪费时间而烦恼吗?FFXIV_ACT_CutsceneSkip插件能够…

张小明 2026/1/5 5:15:56 网站建设

网站建设项目验收表工信部网站备案系统怎么注册

F3D三维查看器:重新定义您的三维模型预览体验 【免费下载链接】f3d Fast and minimalist 3D viewer. 项目地址: https://gitcode.com/gh_mirrors/f3/f3d 还在为复杂的三维软件安装和配置而烦恼吗?F3D三维查看器为您提供了一种全新的解决方案。这款…

张小明 2026/1/5 7:50:40 网站建设

网站建设 佛山建外贸网站需要多少钱

企业级Word内容集成解决方案:信创环境全兼容方案 作为山东某集团企业的项目负责人,面对日益增长的政府项目需求,我针对Word内容集成这一关键需求进行了全面技术评估和方案设计。以下是符合信创要求的完整解决方案。 一、需求分析与技术挑战…

张小明 2026/1/6 15:38:42 网站建设

网站优化有哪些类型医药公司网站模板

轻量级部署方案:LobeChat在树莓派上的可行性实验 在智能家居设备日益复杂的今天,确保无线连接的稳定性已成为一大设计挑战。然而,类似的边缘计算场景并不仅限于物联网控制——当大语言模型(LLM)开始渗透进日常生产力工…

张小明 2026/1/5 14:42:59 网站建设

asp图片源码网站常德公司做网站

量子计算助力供应链优化:原理、算法与应用 1. 量子计算简介 量子计算已取得显著进展,能够推动包括供应链在内的多个行业的变革。它以物理学的数学原理为基础,与传统计算机截然不同。量子计算的起源可追溯到一些杰出科学家的突破性想法,如理查德费曼(Richard Feynman)在…

张小明 2026/1/11 2:30:14 网站建设

做素食香料哪个网站买东莞市建设局

小红书下载神器:3步搞定无水印批量下载,新手也能轻松上手 【免费下载链接】XHS-Downloader 免费;轻量;开源,基于 AIOHTTP 模块实现的小红书图文/视频作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-…

张小明 2026/1/12 0:30:00 网站建设