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

六盘水市网站建设_网站建设公司_Angular_seo优化

图片无版权网站,胶州网站开发,网页设计公司杭州,做车展招商的网站2316. 统计无向图中无法互相到达点对数 中等 给你一个整数 n #xff0c;表示一张 无向图 中有 n 个节点#xff0c;编号为 0 到 n - 1 。同时给你一个二维整数数组 edges #xff0c;其中 edges[i] [ai, bi] 表示节点 ai 和 bi 之间有一条 无向 边。 请你返回 无法互相…2316. 统计无向图中无法互相到达点对数 中等 给你一个整数 n 表示一张 无向图 中有 n 个节点编号为 0 到 n - 1 。同时给你一个二维整数数组 edges 其中 edges[i] [ai, bi] 表示节点 ai 和 bi 之间有一条 无向 边。 请你返回 无法互相到达 的不同 点对数目 。 示例 1 输入n 3, edges [[0,1],[0,2],[1,2]] 输出0 解释所有点都能互相到达意味着没有点对无法互相到达所以我们返回 0 。示例 2 输入n 7, edges [[0,2],[0,5],[2,4],[1,6],[5,4]] 输出14 解释总共有 14 个点对互相无法到达 [[0,1],[0,3],[0,6],[1,2],[1,3],[1,4],[1,5],[2,3],[2,6],[3,4],[3,5],[3,6],[4,6],[5,6]] 所以我们返回 14 。提示 1 n 1050 edges.length 2 * 105edges[i].length 20 ai, bi nai ! bi不会有重复边。 DFS class Solution {// 统计联通分量 个数 和 大小// 然后递推求出点对个数// 例如 4 1 2// 4 * 1 5 * 2public long countPairs(int n, int[][] edges) {ListInteger[] g new ArrayList[n];Arrays.setAll(g, e - new ArrayList());for(int[] e : edges){int x e[0], y e[1];g[x].add(y);g[y].add(x);}boolean[] vis new boolean[n];ListInteger list new ArrayList();for(int i 0; i n; i){if(!vis[i]){int cnt dfs(i, -1, g, vis);list.add(cnt);}}long res 0l, sum 0l;for(Integer e : list){res e * sum;sum e;}return res;}private int dfs(int x, int fa, ListInteger[] g, boolean[] vis){int res 1;vis[x] true;for(int y : g[x]){if(y ! fa !vis[y])res dfs(y, x, g, vis);}return res;} }并查集 统计连通块大小可以用并查集做 class Solution {// 统计联通分量 个数 和 大小public long countPairs(int n, int[][] edges) {UF uf new UF(n);for(int[] e : edges){uf.union(Math.max(e[0], e[1]), Math.min(e[0], e[1]));}MapInteger, Integer map new HashMap();for(int i 0; i n; i){map.merge(uf.find(i), 1, Integer::sum);}long res 0l, sum 0l;for(int x : map.keySet()){res (long)map.get(x) * sum;sum map.get(x);}return res;} }/* ------------ 并查集模版 ------------ */ class UF {int[] parent; // par数组用来存储根节点par[x]y表示x的根节点为yint[] size; // size[i]表示以i为根的联通块大小int count; // count表示连通块个数每次调用union时count-1public UF(int n) {this.count n;parent new int[n];size new int[n];for (int i 0; i n; i) {parent[i] i;size[i] 1;}}public void union(int x, int y) {int rootx find(x);int rooty find(y);if (rootx rooty) return;else//不是同一个根即不在同一个集合就合并parent[rootx] rooty;size[rooty] size[rootx];count--;}public int find(int x) {// 路径压缩if (parent[x] ! x) {parent[x] find(parent[x]);}return parent[x];} }
http://www.ihoyoo.com/news/137558.html

相关文章:

  • 公司官方网站建设申请黑河网站建设公司
  • 有限公司网站建设 互成网络地址 四川定制网站开发介绍图
  • 做网站需要什么权限培训行业网站建设的重要性
  • 免费可商用的素材网站阿里云wordpress搭建
  • 山西建设部网站四川网站制作
  • 加强网站队伍建设深圳网站seo建设
  • 哪个网站做医学培训好大连网站建设是什么
  • 免费的行情软件网站下载免费线上网站开发相关书籍
  • 最好在线网站建设wordpress用户vip
  • 康巴什网站建设贵阳建筑公司网站建设
  • 淄博网站建设优化公司需要推广的软件
  • uc做购物网站免费企业网站系统源码
  • 网站帮忙备案做外贸如何分析客户网站
  • 高档网站设计淘宝的seo是什么意思
  • 网站系统分类做网站用的图片分辨率
  • 带漂浮广告的网站辽阳做网站公司
  • html5 网站 适配手机广告 网站举例
  • 直播网站开发wordpress wpenqueuescript
  • 怎样建设VR网站中国建设银行云浮分行网站
  • 网站服务器的维护方法哪个网站可以做自由行地图
  • 21dove谁做的的网站网络整合营销
  • 工信部网站备案密码网站建设公司哈
  • 织梦猫html5高端网络服务机构网站模板重庆勘察设计协会网站
  • 天津 建设执业资格注册中心网站微信公众号设计网站
  • 广西建设厅网站首页上海市建设注册管理网站
  • 淮南网站设计惠东seo公司
  • 怀化市住房与城乡建设厅网站邯郸做wap网站费用
  • 网站建设费用折旧年限电子商务代运营
  • 广州百度网站搭建手机网页被禁止访问了怎么办
  • 南浔区住房和城乡建设网站国外产品展示网站模板