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

网站建设公司哪里好网站设计公司北京

网站建设公司哪里好,网站设计公司北京,做一个静态网站多少钱,做模特网站文章目录 二分图介绍染色法判定二分图例题#xff1a;860. 染色法判定二分图 匈牙利匹配二分图最大匹配匈牙利匹配算法思想例题#xff1a;861. 二分图的最大匹配 二分图介绍 https://oi-wiki.org/graph/bi-graph/ 二分图是图论中的一个概念#xff0c;它的所有节点可以被… 文章目录 二分图介绍染色法判定二分图例题860. 染色法判定二分图 匈牙利匹配二分图最大匹配匈牙利匹配算法思想例题861. 二分图的最大匹配 二分图介绍 https://oi-wiki.org/graph/bi-graph/ 二分图是图论中的一个概念它的所有节点可以被分为两个独立的集合每个边的两个端点分别来自这两个不同的集合。 换句话说二分图中不存在连接同一集合内两个节点的边。 染色法判定二分图 如何判断一个图是二分图 当且仅当图中不含奇数环。奇数环指的是环中边的个数是奇数因为每一条边都是从一个集合走到另一个集合只有走偶数次才有可能回到同一个集合。 染色相邻的节点的颜色不一样。 因为没有奇数环所以染色过程是一定不会发生矛盾的。 时间复杂度是 O ( n m ) O(n m) O(nm) n 表示点数m 表示边数。 例题860. 染色法判定二分图 https://www.acwing.com/activity/content/problem/content/926/ 使用 dfs 对图中各个节点染色染色过程中不发生冲突即为二分图。 import java.util.*;public class Main {static final int N 100005;static ListInteger[] g new ArrayList[N];static int[] color new int[N];public static void main(String[] args){Scanner sc new Scanner(System.in);int n sc.nextInt(), m sc.nextInt();// 建图Arrays.setAll(g, e - new ArrayListInteger());for (int i 0; i m; i) {int u sc.nextInt(), v sc.nextInt();g[u].add(v);g[v].add(u);}// 图可能由多个非连通的子图构成。因此应该对每一个尚未访问过的点都进行一次深度优先搜索。boolean f true;for (int i 1; i n; i) {if (color[i] 0 !dfs(i, 1)) {f false;break;}}System.out.println(f? Yes: No);}static boolean dfs(int x, int c) {boolean res true;color[x] c;for (int y: g[x]) {if (color[y] 0) res dfs(y, 3 - c);else if (color[y] color[x]) return false;}return res;} } 匈牙利匹配 二分图最大匹配 **二分图最大匹配** 翻译成人话就是—— 给定一个二分图 G即分左右两部分各部分之间的点没有边连接要求选出一些边使得这些边没有公共顶点且边的数量最大。 匈牙利匹配算法思想 两个集合的点数分别是 n1 , n2。 枚举 n1 尝试 i 是否可以找到一个 j 完成匹配匹配成功就 cnt。 所以重点是 find(i) 方法 对每个 i 枚举 i 相邻的所有 j —— 如果 j 没有被匹配就直接返回 true如果 j 被匹配了就尝试现在和 j 匹配的另一个 i 能不能换一个 j能换就换一个然后返回 true否则返回 false。 时间复杂度是 O ( n ∗ m ) O(n * m) O(n∗m)n 表示点数m 表示边数。 例题861. 二分图的最大匹配 https://www.acwing.com/activity/content/problem/content/927/ 重点是理解数组 match 和 st 的含义以及方法 find(x) 的写法和使用。 import java.util.*;public class Main {static final int N 505;static int[][] g new int[N][N];static int[] match new int[N]; // match记录集合2中各个点匹配的集合1的点是哪个static boolean[] st new boolean[N]; // st表示集合2中的点有没有被匹配static int n1, n2;public static void main(String[] args){Scanner sc new Scanner(System.in);n1 sc.nextInt();n2 sc.nextInt();int m sc.nextInt();// 建图for (int i 0; i m; i) {int u sc.nextInt(), v sc.nextInt();g[u][v] 1; // 左边的 u 和 右边的 v 之间有一条边}int cnt 0;for (int i 1; i n1; i) {Arrays.fill(st, false); // 重置stif (find(i)) cnt;}System.out.println(cnt);}static boolean find(int x) {for (int j 1; j n2; j) {if (!st[j] g[x][j] 1) {st[j] true;// 如果 j 还没有匹配或者当前使用 j 的 x 可以让出去if (match[j] 0 || find(match[j])) {match[j] x;return true;}}}return false;} }
http://www.dnsts.com.cn/news/121345.html

相关文章:

  • 技术支持 东莞网站建设页面设计说明怎么写
  • 三明网站建设tudouly河北省建设机械会网站
  • 推荐10个优秀的国外ui设计网站免费做长图网站
  • 网站建设项目实施计划书wordpress 用户中心主题
  • 公司网站开发建设深圳网站营销公司简介
  • 国内装饰行业网站开发欧洲十大服务器的推荐
  • 潍坊做网站软件免费的素材网站
  • 个人建设网站程序自己建网站流程要学什么
  • 怎么选择网站模板东营市建设监理协会网站
  • 做外贸要建什么网站苏州工业园区建设网站
  • 06年可以做相册视频的网站wordpress中文转英文版
  • wordpress 站长工具付费ppt模板网站哪个好
  • 太原网站建设哪家好wordpress访问量大
  • 连锁店管理网站开发wordpress图片用阿里云储存
  • 想在网上做开发网站接活儿世界著名办公室设计
  • 自己怎么做 优惠券网站做一个自己的网站流程
  • dw 做网站模板建设银行手机版官方网站下载
  • 网站如何做搜索引擎优化外网访问不了内网建设的网站
  • 北京国互网网站建设报价PHP网站开发都需要学什么
  • 购物网站免费模板郴州优化公司
  • 软件网站开发团队名称wordpress控制面板都没
  • 建设旅游业网站目的做网站有限公司
  • 韩国网站免费观看西地那非能提高硬度吗
  • 长葛做网站嘉兴制作网站机构
  • 免费网站空间怎么商务网站建设与维护实训报告
  • 建行的官方网站福州市建设工程工料机信息网站
  • 为什么企业要建设网站亚马逊网站联盟
  • 企业网站的用户需求泉州网站模板建站
  • 网站开发培训教程上海个人医疗网站备案表
  • 开网站要多少钱工程机械外贸网站建设