P4716 【模板】最小树形图】的更多相关文章

题目背景 这是一道模板题. 题目描述 给定包含 \(n\) 个结点, \(m\) 条有向边的一个图.试求一棵以结点 \(r\) 为根的最小树形图,并输出最小树形图每条边的权值之和,如果没有以 \(r\) 为根的最小树形图,输出 \(-1\) . 输入输出格式 输入格式: 第一行包含三个整数 \(n,m,r\) ,意义同题目所述. 接下来 \(m\) 行,每行包含三个整数 \(u,v,w\) ,表示图中存在一条从 \(u\) 指向 \(v\) 的权值为 \(w\) 的有向边. 输出格式: 如果原图…
最小树形图求的是有向图的最小生成树,跟无向图求最小生成树有很大的区别. 步骤大致如下: 1.求除了根节点以外每个节点的最小入边,记录前驱 2.判断除了根节点,是否每个节点都有入边,如果存在没有入边的点,说明树形图不存在,退出. 3.沿着节点的前驱找,如果发现环,把环缩点. 4.如果不存在环,结束.否则,跳到1. 其实我是来贴模板的... 比较好的讲解:最小树型图的求解与实现 代码讲解比较好的:hdu4009 Transfer water ( 最小树形图的模板 ) 用IO优化时死活TLE,改了sc…
开始学习最小树形图,模板题. Ice_cream’s world II Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) [Problem Description] After awarded lands to ACMers, the queen want to choose a city be her capital. This is an important event in…
http://poj.org/problem?id=3164 题意: 求最小树形图. 思路: 套模板. 引用一下来自大神博客的讲解:http://www.cnblogs.com/acjiumeng/p/7136604.html 算法步骤如下: 1.判断图的连通性,若不连通直接无解,否则一定有解. 2.为除了根节点以外的所有点选择一个权值最小的入边,假设用pre数组记录前驱,f数组记录选择的边长,记所选边权和为temp. 3.(可利用并查集)判断选择的的边是否构成环,若没有则直接$ans+=tem…
题目大意:给一张无向图,求出最小树形图. 题目分析:套朱-刘算法模板就行了... 代码如下: # include<iostream> # include<cstdio> # include<cstring> # include<algorithm> using namespace std; # define LL long long # define REP(i,s,n) for(int i=s;i<n;++i) # define CL(a,b) me…
题目链接:http://poj.org/problem?id=3164 详细可以看这里:http://www.cnblogs.com/vongang/archive/2012/07/18/2596851.html 我没怎么看懂 = =,姑且做个模板了.. 题意就是给n个点,m条单向边,并且已知根节点,求有向图的最小生成树. #include <stdio.h> #include <iostream> #include <string.h> #include <al…
题目链接:http://poj.org/problem?id=3164 题意:第一行为n, m,接下来n行为n个点的二维坐标, 再接下来m行每行输入两个数u, v,表点u到点v是单向可达的,求这个有向图的最小生成树即求最小树形图: 思路: 这是一道最小树形图模板题: 我们可以用朱刘算法来解: 朱刘算法只有3步,然后不断循环. 1:找到每个点的最小入边.既然是生成树,那么对于每个点来说,只要选一个权值最小的入边就可以了. 贪心思想.因为如果不是最小入边,那么它肯定不是最小树形图的一条边,考虑它是没…
/* tle十几次,最后发现当i从1开始时,给环赋值时要注意啊! 最小树形图 */ #include<stdio.h> #include<string.h> #include<math.h> #define N 110 #define inf 0x3fffffff #define eps 1e-10 struct node { int u,v; double w; }edge[N*N*2]; double distance (double x,double y,doub…
题目大意:给定一个有向图,根节点已知,求该有向图的最小树形图.最小树形图即有向图的最小生成树,定义为:选择一些边,使得根节点能够到达图中所有的节点,并使得选出的边的边权和最小. 题目算法:朱-刘算法(即由中国人朱永津和刘振宏共同发明的算法). 算法步骤如下: 1.判断图的连通性,若不连通直接无解,否则一定有解. 2.为除了根节点以外的所有点选择一个权值最小的入边,假设用pre数组记录前驱,f数组记录选择的边长,记所选边权和为temp. 3.(可利用并查集)判断选择的的边是否构成环,若没有则直接a…
#include<stdio.h> /*思路:显然对于每个地方, 只有一种供水方式就足够了,这样也能保证花费最小, 而每个地方都可以自己挖井,所以是不可能出现无解的情况的, 为了方便思考,我们引入一个虚拟点,把所有自己挖井的都连到这个点, 边权为挖井的花费,而如果i能从j处引水,则从j向i连边,边权为引水的花费, 然后对这个有向图,以虚拟点为根,求最小树形图即可(最小树形图即为有向图的最小生成树).*/ #include<string.h> #include<math.h&g…