题意

题目链接

Sol

朱刘算法?感觉又是一种神仙贪心算法

大概就是每次贪心的用每个点边权最小的入边更新答案,如果不行的话就缩起来找其他的边

不详细说了,丢链接走人..

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 10, INF = 1e9 + 10;
inline int read() {
char c = getchar(); int x = 0, f = 1;
while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
int N, M, R, fa[MAXN], mn[MAXN], id[MAXN], vis[MAXN];
struct Edge {
int u, v, w, nxt;
}E[MAXN];
int head[MAXN], num = 1;
inline void AddEdge(int x, int y, int z) {
E[num] = (Edge) {x, y, z, head[x]}; head[x] = num++;
}
int ZhuLiu() {
int ans = 0;
while("attack is a pig") {
for(int i = 1; i <= N; i++) id[i] = vis[i] = 0, mn[i] = INF; int cnt = 0;
for(int i = 1; i <= M; i++) if((E[i].u != E[i].v) && (E[i].w < mn[E[i].v])) mn[E[i].v] = E[i].w, fa[E[i].v] = E[i].u;
int x; mn[R] = 0;//tag
for(int i = 1; i <= N; i++) {
if(mn[i] == INF) return -1; ans += mn[i];
for(x = i; (!id[x]) && x != R && (vis[x] != i); x = fa[x]) vis[x] = i;
if(x != R && (!id[x])) {
id[x] = ++cnt; for(int t = fa[x]; t != x; t = fa[t]) id[t] = cnt;
}
}
if(!cnt) return ans;
for(int i = 1; i <= N; i++) if(!id[i]) id[i] = ++cnt;
for(int i = 1; i <= M; i++) {
int tmp = mn[E[i].v];
if((E[i].u = id[E[i].u]) != (E[i].v = id[E[i].v])) E[i].w -= tmp;
}
N = cnt; R = id[R];
}
return ans;
}
int main() {
memset(head, -1, sizeof(head));
N = read(); M = read(); R = read();
for(int i = 1; i <= M; i++) {
int x = read(), y = read(), z = read();
AddEdge(x, y, z);
}
printf("%d", ZhuLiu());
return 0;
}

洛谷P4716 【模板】最小树形图(朱刘算法)的更多相关文章

  1. 最小树形图——朱刘算法(Edmonds)

    定义:一个有向图,存在从某个点为根的,可以到达所有点的一个最小生成树,则它就是最小树形图. 朱刘算法实现过程: [在选出入边集后(看步骤1),若有向图中不存在有向环,说明该图就是最小树形图] 1,选入 ...

  2. poj3164(最小树形图&朱刘算法模板)

    题目链接:http://poj.org/problem?id=3164 题意:第一行为n, m,接下来n行为n个点的二维坐标, 再接下来m行每行输入两个数u, v,表点u到点v是单向可达的,求这个有向 ...

  3. POJ 3164 Command Network ( 最小树形图 朱刘算法)

    题目链接 Description After a long lasting war on words, a war on arms finally breaks out between littlek ...

  4. POJ 3164 Command Network 最小树形图 朱刘算法

    =============== 分割线之下摘自Sasuke_SCUT的blog============= 最 小树形图,就是给有向带权图中指定一个特殊的点root,求一棵以root为根的有向生成树T, ...

  5. 最小树形图--朱刘算法([JSOI2008]小店购物)

    题面 luogu Sol 首先设一个 \(0\) 号点,向所有点连边,表示初始价值 显然这个图的一个 \(0\) 为根的最小有向生成树的边权和就是每个买一次的最小价值 再买就一定能优惠(包含 \(0\ ...

  6. POJ - 3164-Command Network 最小树形图——朱刘算法

    POJ - 3164 题意: 一个有向图,存在从某个点为根的,可以到达所有点的一个最小生成树,则它就是最小树形图. 题目就是求这个最小的树形图. 参考资料:https://blog.csdn.net/ ...

  7. bzoj 4349 最小树形图——朱刘算法

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4349. 学习博客:http://www.cnblogs.com/xzxl/p/7243466 ...

  8. 洛谷.4897.[模板]最小割树(Dinic)

    题目链接 最小割树模板.具体见:https://www.cnblogs.com/SovietPower/p/9734013.html. ISAP不知为啥T成0分了.. Dinic: //1566ms ...

  9. 洛谷.3381.[模板]最小费用最大流(zkw)

    题目链接 Update:我好像刚知道多路增广就是zkw费用流.. //1314ms 2.66MB 本题优化明显 #include <queue> #include <cstdio&g ...

随机推荐

  1. 【Qt开发】实现系统托盘,托盘菜单,托盘消息

    概述 系统托盘就是在系统桌面底部特定的区域显示运行的程序.windows在任务栏状态区域,linux在布告栏区域.应用程序系统托盘功能,是比较普遍的功能,本篇将详细的介绍如何实现该功能. 演示Demo ...

  2. ubuntu下安装ffmpeg

    sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next sudo apt-get update sudo apt-get install ff ...

  3. 洛谷P3980 [NOI2008]志愿者招募

    题解 最小费用最大流 每一天是一条边\((inf-a[i], 0)\) 然后对于一类志愿者, 区间两端连一条\((inf, c[i])\) \(S\)向第一个点连\((inf, 0)\) 最后一个点向 ...

  4. [性能测试]:关于消费类ISO8583协议脚本的开发

    一,要发送的报文,转化成16进制的,报文如下 "\x01\x52"//报文长度338 "\x60\x00\x24\x00\x00"//TPDU "\x ...

  5. 响应式Web设计-一种优雅的掌上展现

    入门 flat - style (too many ad.) writeshell

  6. django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty

    https://www.e-learn.cn/content/wangluowenzhang/165461 问题: I created a new project in django and past ...

  7. sublime text 3 快捷键&&使用技巧

    参考文章:https://github.com/jikeytang/sublime-text 这里有很多技巧http://www.jianshu.com/p/3cb5c6f2421c/ 置顶: Ctr ...

  8. JS DATE对象详解

    1.建立时间对象:可获取年,月,日,星期,时,分,秒 var d = new Date(); console.log(d.getFullYear()+'年'+d.getMonth()+'月'+d.ge ...

  9. 关于function构造函数特别注意的

    function在javascript中是对象,所以function持有构造函数例子:var a = new Function("x","y","re ...

  10. applets

    Java Applet 可以大大提高Web页面的交互能力和动态执行能力.包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页. Applet 当用户访问这样的网页时,A ...