
克鲁斯卡尔算法+并查集
han_hhh
这个作者很懒,什么都没留下…
展开
-
最短路径【上海交大复试机试题】【最小生成树】
题目描述N个城市,标号从0到N-1,M条道路,第K条道路(K从0开始)的长度为2^K,求编号为0的城市到其他城市的最短距离输入描述:第一行两个正整数N(2<=N<=100)M(M<=500),表示有N个城市,M条道路接下来M行两个整数,表示相连的两个城市的编号输出描述:N-1行,表示0号城市到其他城市的最短路,如果无法到达,输出-1,数值太大的以MOD 100000 的结果输出。示例1输入复制4 41 22 31 30 1输出复原创 2020-07-15 13:03:17 · 413 阅读 · 0 评论 -
Head of a Gang【浙江大学复试上机题】【并查集】
题目描述One way that the police finds the head of a gang is to check people's phone calls. If there is a phone call between A and B, we say that A and B is related. The weight of a relation is defined to be the total time length of all the phone calls made b原创 2020-07-13 23:53:50 · 266 阅读 · 0 评论 -
找出直系亲属【浙江大学复试上机题】【并查集】
题目描述 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如果A,B是C的(外)祖父,祖母,则A,B是C的grandparent,C是A,B的grandchild,如果A,B是C的(外)曾祖父,曾祖母,则A,B是C的great-grandparent,C是A,B的great-grandchild,之后再多一辈,则在关系上加一个great-。输入描述: 输入包含多组测试用例,每组用例首先包含2个整数n(0<=n<=26)和m(0<m<...原创 2020-07-13 18:03:19 · 469 阅读 · 0 评论 -
Is It A Tree?【北京大学复试上机题】【并查集】
Every node except the root has exactly one edge pointing to it.There is a unique sequence of directed edges from the root to each node.除了根节点外的其他节点都有正好一条边指向他,从根节点到每一个点都有一个独一无二的有向边序列所以这个题需要考虑3点,一是连通图只有一个 二是根节点只有一个(即入度为0的节点。这里主要是考虑到了有向图) 三是每个节点的入度最多只有原创 2020-07-12 23:24:42 · 209 阅读 · 0 评论 -
Save your cats Aizu - 2224 【克鲁斯卡尔算法】
H - Save your catsAizu - 2224题意:有n个点,m条边,每条边由这n个点中的两个组成,这些边可能会构成一个封闭图形,求使所有封闭图形不再封闭所需要破坏的最短边长。也就是有个图里边有很多环,怎么拆除最短的边使得不再存在有环例题:先输入3个点的坐标:1:(0,0),2:(3,0),3:(0,4);0 03 00 4再输入哪两个点是相连的1 2...原创 2018-12-02 20:08:25 · 206 阅读 · 4 评论 -
Bad Cowtractors POJ 2377【克鲁斯卡尔算法】
G - Bad Cowtractors POJ - 2377 题意:求一个最大生成树,如果这个图是森林,输出 -1,不是的话输出权值分析:最大生成树与最小生成树是反着的,只需要将cmp函数的方向改下,判断这个图是不是森林,只需要每次合并时将count++即可,最后判count是否等于n-1即可#include<iostream>#include<algorit...原创 2018-12-02 17:29:52 · 221 阅读 · 0 评论 -
Out of Hay POJ 2395【克鲁斯卡尔算法】
I - Out of Hay POJ - 2395 题意:给出点数和边数,问这个图所构成的最小生成树中最大的权值是多少。比如这个最小生成树是由1 2 5三条边构成的,那么肯定5就是其中在克鲁斯卡尔算法模板上的改动 就是加一个找出最小生成树中最大权值边的算法#include<iostream>#include<algorithm>using namesp...原创 2018-12-02 17:18:27 · 196 阅读 · 0 评论 -
克鲁斯卡尔算法
算法流程:知道一个图所有边的权值,从小到大排序,排序以后从头到尾,看这条边连通的点如果不连通,就加上这条边的权值,否则直接跳过结构体中:u是起点 v是终点 w是边权,struct edge{ int u,v,w;};edge edges[MAXM];首先按照边权从小到大排序,将边从小到大开始按照并查集判断联通性,如果不连通,加上此时这条边的边权,这也就意味着这是两点之间的...原创 2018-12-02 17:12:59 · 601 阅读 · 0 评论 -
并查集
首先存在一个数组f[],用来标记每个节点的父节点是谁开始时先初始化为他自己(初始化很重要啊,一定记得要初始化)void init(){ for(int i=0;i<=n;i++){ f[i]=i; }} 然后合并void merge(int a,int b){ int t1=find(a); int t2=find...原创 2018-12-02 17:03:59 · 476 阅读 · 2 评论 -
Jungle Roads
Jungle RoadsTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 30648 Accepted: 14347DescriptionThe Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was...原创 2018-07-15 17:33:45 · 1917 阅读 · 0 评论