ICode9

精准搜索请尝试: 精确搜索
  • 常用十大算法(七)— 克鲁斯卡尔算法2020-09-06 19:32:14

    常用十大算法(七)— 克鲁斯卡尔算法 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 介绍 克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成树的算法。 最小生成树 最小生成树(Minimum Cost Spanning Tr

  • CF1385E【Directing Edges】 (拓扑排序)2020-09-06 12:33:32

    CF2000分图论 题意:给你一个n个顶点m条边的图,其中一些边没有方向,其余边有方向,让你对每一条没有方向的边赋一个方向,要求最终图不能形成自环。(没有重边) 题解:首先先看有方向的边所构成的图原本是否已经成环,如果成环的话必定直接输出NO,不成环的话则必定输出YES。统计每个点的indeg,进行

  • PAT甲级1154Vertex Coloring2020-08-30 18:03:41

    题目链接 https://pintia.cn/problem-sets/994805342720868352/problems/1071785301894295552 题解 题目 k着色:相邻(有共享边)点的颜色不同 输入 N:点的数量,点的编号为[0,N-1],不超过10000 M:边的数量,不超过10000 M条边 K:着色方案的数量,不超过100 K个着色方案:每行有N个数字,第i个数字

  • 905. 区间选点(贪心)2020-08-26 10:31:36

       分析:先按区间的右端点排序,然后从左到右遍历,当前区间左端点小于上一区间的右端点,总个数不变,否则总个数加一,并更新右端点 #include <bits/stdc++.h> using namespace std; const int N = 100010; struct Edge{int a, b;} edges[N]; bool operator < (Edge e1, Edge e2) {

  • 最小生成树之克鲁斯卡尔算法2020-08-21 19:01:56

    算法思路 准备:边类,图类; 根据图的邻接矩阵获得边集合,并将边按照边的权值进行排序(升序); 依次取边集合中的边,如果取出来的这条边不和已经选择的边构成回路就添加这条边,否则取边集合中的下一条边。 Q:怎么判断新取的边和已经选取的边会不会构成回路? A:引入一个数组,记录每个顶点的终点,

  • Codeforces Round #656 (Div. 3)E. Directing Edges(拓扑排序+构造dag图)2020-07-25 19:01:50

    题目大意 给你\(n\)个定点\(m\)条边,这\(m\)条边中有有向边也有无向边。 当\(t=0\)时,输入边代表的是无向边。 当\(t=1\)时,输入的边代表的是\(x->y\)的有向边。 要你将所有的无向边变为有向边后整个图是无环的(有向无环图)。 思路 有向边时建边而且更新入度,无向边时只存边不更新入度

  • [LeetCode] 1059. All Paths from Source Lead to Destination2020-07-25 04:31:13

    Given the edges of a directed graph, and two nodes source and destination of this graph, determine whether or not all paths starting from source eventually end at destination, that is: At least one path exists from the source node to the destinat

  • 【Codeforces 1385 E】Directing Edges2020-07-20 23:01:20

    题目链接 点我呀 翻译 给你一个 \(n\) 个节点 \(m\) 条边的图,但是有一些边的方向还没有确定。 问你能否将其中没有确定方向的边确定了,使得最后形成的整张图没有环。 题解 一说就会做的题。 先将已经确定了方向的边作为图的边,然后在这个有向图的基础上跑拓扑排序。 记录下每个节点

  • 2020牛客暑期多校训练营(第一场)H-Minimum-cost Flow(最小费用流)2020-07-20 18:31:31

    题目链接 题目大意:初始给定一个\(n\)个点,\(m\)条边,费用全部确定的网络。要求对于接下来的\(k\)次询问,每次都给定所有边的容量为一个分数\(\frac{u}{v}\)。要求对于每一个询问计算从点\(1\)到点\(n\)跑大小为\(1\)的流的最小花费。 大致思路:因为我们事先知道了所有边的费用,并且后续

  • Java数据结构与算法之图2020-07-16 21:32:14

    六、图 1. 图基本介绍 当我们需要表示多对多的关系时,这里我们就用到了图。 1.1 图的举例说明 图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。结点也可以称为顶点。 1.2 图的常用概念 1)顶点(vertex) 2)边(edge) 3)路径 4)无向图 5)有向图 6)

  • Swust OJ1065: 无向图的连通分量计算2020-05-29 10:07:43

    题目描述: 假设无向图G采用邻接矩阵存储,编写一个算法求连通分量的个数。 输入:第一行为一个整数n,表示顶点的个数(顶点编号为0到n-1),接下来是为一个n*n大小的整数矩阵,表示图的邻接关系。数字为0表示不邻接,1表示不邻接。输出:连通分量的个数 相关知识:    利用图的深度优先搜索(DFS):从图中

  • bzoj1927: [Sdoi2010]星际竞速 最小费用流2020-05-28 09:05:18

    和软件安装比较相似的拆点模型.    我们发现,每个点只能经过一次,也就是说每个点最多可以贡献给其他点一次.    然后连边方式和软件安装就几乎是相同的了.   code:  #include <bits/stdc++.h> #define N 2008 #define inf 10000000 #define ll long long #define set

  • 给有需要的人-(邻接矩阵转换边集数组)2020-05-20 12:39:56

    今天小孱弱弱像往常一样码,克鲁斯卡尔算法中的边集数组,由于比较冷门,网上几乎找不到邻接矩阵转化边集数组的信息,于是小孱弱鼓起勇气写一篇,帮助有需要的人。 为了保证时间复杂度不能太高,我们在遍历邻接矩阵时,由于是无向图,我们只需遍历左下三角形就ok,瞬间复杂度降低一大块,再往下

  • 图的应用(一)——最小生成树2020-04-21 11:57:50

    一、最小生成树 先明白生成树的概念:对连通图进行遍历,过程中所经过的边和顶点的组合可看做是一棵普通树,通常称为生成树。 那么,在连通网的所有生成树中,所有边的代价和最小的生成树,称为最小生成树(MST)。 如下图所表示: 二、克鲁斯卡尔算法(Kruskal算法)求最小生成树 Kruskal算法特点:

  • ~~Bellman-Ford算法2020-04-15 18:38:14

    时间复杂度 O(nm), n 表示点数,m 表示边数 int n, m; // n表示点数,m表示边数 int dist[N]; // dist[x]存储1到x的最短路距离 struct Edge // 边,a表示出点,b表示入点,w表示边的权重 { int a, b, w; }edges[M]; // 求1到n的最短路距离,如果无法从1走到n,则

  • leetcode2112020-04-04 09:03:53

    1 class TrieNode: 2 def __init__(self): 3 self.words = 0 4 self.edges = [None] * 26 5 6 7 class WordDictionary: 8 def __init__(self): 9 self.root = TrieNode() 10 11 def addWord(self, word: str) -> None: 1

  • 掌握魔法の东东 I2020-04-03 10:01:26

    题解: 东东在老家农村无聊,想种田。农田有 n 块,编号从 1~n。种田要灌氵众所周知东东是一个魔法师,他可以消耗一定的 MP 在一块田上施展魔法,使得黄河之水天上来。他也可以消耗一定的 MP 在两块田的渠上建立传送门,使得这块田引用那块有水的田的水。 (1<=n<=3e2)黄河之水天上来的消耗是

  • 戴好口罩2020-04-03 09:53:10

    题意: 新型冠状病毒肺炎(Corona Virus Disease 2019,COVID-19),简称“新冠肺炎”,是指2019新型冠状病毒感染导致的肺炎。如果一个感染者走入一个群体,那么这个群体需要被隔离!小A同学被确诊为新冠感染,并且没有戴口罩!!!!!!危!!!时间紧迫!!!!需要尽快找到所有和小A同学直接或者间接接触过的同学,将他们隔

  • P1361 小M的作物 【网络流】【最小割】2020-03-28 14:58:34

    题目描述 小M在MC里开辟了两块巨大的耕地A和B(你可以认为容量是无穷),现在,小P有n中作物的种子,每种作物的种子有1个(就是可以种一棵作物)(用1...n编号)。 现在,第i种作物种植在A中种植可以获得ai的收益,在B中种植可以获得bi的收益,而且,现在还有这么一种神奇的现象,就是某些作物共同种在一块耕

  • CF603E Pastoral Oddities2020-03-23 12:03:20

    Pastoral Oddities \(n\) 个点,\(m\) 次操作,每次操作加入一条带权无向边,然后询问当前图中是否存在一个生成子图,满足所有点的度数都是奇数;如果有,输出所有满足条件的生成子图中最大边权的最小值(没有则输出-1)。 \(2\leq n\leq 10^5,1\leq m\leq 3\times 10^5\)。 题解 https://codefor

  • luoguP1361 小M的作物 最小割2020-03-19 20:54:27

    非常经典的最小割模型.  code:    #include <bits/stdc++.h> #define N 3006 #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; const ll inf=2000000001; namespace net { struct Edge {

  • 5355. T 秒后青蛙的位置(Leetcode179周赛)2020-03-08 12:39:12

    5355. T 秒后青蛙的位置 难度困难0 给你一棵由 n 个顶点组成的无向树,顶点编号从 1 到 n。青蛙从 顶点 1 开始起跳。规则如下: 在一秒内,青蛙从它所在的当前顶点跳到另一个 未访问 过的顶点(如果它们直接相连)。 青蛙无法跳回已经访问过的顶点。 如果青蛙可以跳到多个不同顶点,

  • LeetCode 179周赛2020-03-08 12:38:40

    刚刚交完卷子,来整理个新鲜的。 这次的周赛题目总体来说还算平和,但是想拿到分还是需要一些技巧,相比于上一次,这一次的题目在数据上开始卡算法的时间复杂度了,一些暴力的写法可能过不了一些题。 咱一道一道说。 生成每种字符都是奇数个的字符串 题目 这个题,emm,可以算是出题人的

  • Kruskal实现最小生成树2020-03-02 19:42:01

    一、Kruskal基本原理 每次都从剩余边中选取权值最小的,当然,这条边不能使已有的边产生回路。 二、图解 先对边的权值排个序: 1(V0,V4)、2(V2,V6)、4(V1,V3)、6(V1,V2)、8(V3,V6)、10(V5,V6)、12(V3,V5)、15(V4,V5)、20(V0,V1) 首选边1(V0,V4)、2(V2,V6)、4(V1,V3)、6(V1,V2),此

  • LeetCode 685. Redundant Connection II 冗余连接 II (C++/Java)2020-02-25 15:04:31

    题目: In this problem, a rooted tree is a directed graph such that, there is exactly one node (the root) for which all other nodes are descendants of this node, plus every node has exactly one parent, except for the root node which has no parents. The given

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有