题目链接:https://www.luogu.org/problemnew/show/P3931
肉眼观察题目感觉可以跑最大流。
证明是如果拆断一棵树,可以最小割,最小割等于最大流。
注意:
图是无向边,在网络流里建两次边,即四次。
统计一下叶子节点,再建一个超级汇点,所有距离为inf。

#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1000000 + 10;
const int inf = 1e9;
int isleaf[maxn];
int n, m, s, t, deep[maxn], maxflow;
struct edge{int next, to, len;
}e[maxn<<2];
int head[maxn], cnt = -1, cur[maxn];
queue<int> q;
void add(int u, int v, int w, bool flag)
{e[++cnt].next = head[u];e[cnt].to = v;if(flag) e[cnt].len = w;head[u] = cnt;
}
bool bfs(int s, int t)
{memset(deep, 0x7f, sizeof(deep));while(!q.empty()) q.pop();for(int i = 1; i <= n; i++) cur[i] = head[i];deep[s] = 0; q.push(s); while(!q.empty()){int now = q.front(); q.pop();for(int i = head[now]; i != -1; i = e[i].next){if(deep[e[i].to] > inf && e[i].len){deep[e[i].to] = deep[now] + 1;q.push(e[i].to);}}}if(deep[t] < inf) return true;else return false;
}
int dfs(int now, int t, int limit)
{if(!limit || now == t) return limit;int flow = 0, f;for(int i = cur[now]; i != -1; i = e[i].next){cur[now] = i;if(deep[e[i].to] == deep[now] + 1 && (f = dfs(e[i].to, t, min(limit, e[i].len)))){flow += f;limit -= f;e[i].len -= f;e[i^1].len += f;if(!limit) break;}}return flow;
}
void Dinic(int s, int t)
{while(bfs(s, t))maxflow += dfs(s, t, inf);
}
int main()
{memset(head, -1, sizeof(head));scanf("%d%d",&n,&s);t = 1 + n;for(int i = 1; i < n; i++){int u, v, w;scanf("%d%d%d",&u,&v,&w);add(u, v, w, 1);add(v, u, w, 0);add(v, u, w, 1);add(u, v, w, 0);isleaf[u]++, isleaf[v]++;}for(int i = 1; i <= n; i++){if(isleaf[i] == 1 && i != s)add(i, t, inf, 1), add(t, i, inf, 0), add(i, t, inf, 0), add(t, i, inf, 1);}Dinic(s, t);printf("%d\n",maxflow);return 0;
}

转载于:https://www.cnblogs.com/MisakaAzusa/p/9431106.html

【luogu P3931 SAC E#1 - 一道难题 Tree】 题解相关推荐

  1. 【Luogu3931】SAC E#1 - 一道难题 Tree

    problem solution codes //树形DP //f[u]:割掉u和u子树中所有的叶子节点所需要的最小代价 #include<iostream> #include<ve ...

  2. C语言一维/二维数组解引用难理解点以及一道难题

    C语言指针相关的坑爹题 先来一点简单的 求下面各代码打印结果(32位环境): int a[3][4] = {0}; printf("%d\n",sizeof(a)); printf ...

  3. 阿里极客公益——1000+阿里技术专家来回答你的问题或许你挑灯夜战只为一道难题 或许你百思不解只求一个答案 或许你绞尽脑汁只因一种未知 那么他们来了,阿里1000+位技术专家来云栖问答为你解答技

    原文链接:点击打开链接 或许你挑灯夜战只为一道难题 或许你百思不解只求一个答案 或许你绞尽脑汁只因一种未知 那么他们来了,阿里1000+位技术专家来云栖问答为你解答技术难题了 他们用户自己手中的技术来 ...

  4. Codeforces #1248B Grow The Tree题解(Java)

    Codeforces #1248B Grow The Tree题解(Java) 题目大意: 输入: 输出: 数据范围: 思路 代码 题目链接 题目大意: 给出一组线段(题目中叫树枝)的长度,制作成一条 ...

  5. POJ 3321 Apple Tree 题解

    POJ 3321 Apple Tree 题解 POJ 3321 题目 There is an apple tree outside of kaka's house. Every autumn, a l ...

  6. 【Luogu】P3927 SAC E#1 - 一道中档题 Factorial

    [题目]洛谷10月月赛R1 提高组 [题意]求n!在k进制下末尾0的个数,n<=1e18,k<=1e16. [题解]考虑10进制末尾0要考虑2和5,推广到k进制则将k分解质因数. 每个质因 ...

  7. luogu P3690 【模板】Link Cut Tree (动态树)

    嘟嘟嘟 LCT竟然看了整整一天,但好歹是看懂了. 教程这里不写,强烈推荐 闪狐大佬的博客 . 但是还是有几句想说的. 1.尽管LCT和splay很像,但是有一些细节还是不一样的.首先是rotate,我 ...

  8. 【Luogu3926】SAC E#1 - 一道不可做题 Jelly

    problem solution codes //巧妙的利用了x-=min(x,t); x若剩余为0则下面升温也为0 #include<iostream> #include<algo ...

  9. luogu 3413 SAC#1 - 萌数

    题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的.只有满足"存在长度至少为2的回文子串"的数是萌的--也就是说,101是萌的,因为101本 ...

最新文章

  1. mysql错误消息1_MySQL出错信息: Subquery returns more than 1 row及其解决方法
  2. 下一代Hotmail和MSN Messenger最新界面截图
  3. 网易NAPM Andorid SDK实现原理--转
  4. mysql 插入数据时,出现\xF0\x5F\x6F\x70问题
  5. UVA307 Sticks小木棍
  6. mysql myisam简单分表设计
  7. word横向网格线设置在哪里_word排版技巧:如何防止行距随字号而改变?
  8. Vivado时序报告名词解释
  9. speedbutton用法
  10. 备忘录怎么用红笔标注_备忘录丢失怎么找回来?教你轻松玩转备忘录
  11. 在matlab中进行遥感影像地理坐标的相互转换
  12. 使用Golang实现的快速排序
  13. Python之路 - 网络编程之Socket
  14. Google是如何赚钱的 -- 四年工作离别小结
  15. Onvif协议快速入门
  16. android 5.01,爱思加强版
  17. 桌面美化 | win10高仿mac桌面
  18. 【数据结构:树】——搜索二叉树-K模型(非递归和递归)
  19. 从Sklearn Bunch对象到Pandas DataFrame对象的转换
  20. 网络工程师学习路线?

热门文章

  1. 浅析C#中new、override、virtual关键字的区别
  2. 疯狂ios之cocos2d中的文本
  3. MyEclipse的代码提示功能
  4. linux启动找不到,pxe启动的时候找不到pxelinux.0的原因
  5. 转载关于星座理论的套路
  6. [胡言乱语] 20170622
  7. 计算机设备安装属于劳务吗,​安装服务费属于劳务费吗
  8. Android杂谈--ListView之BaseAdapter的使用
  9. mysql begin rollback_事务控制语句,begin,rollback,savepoint,隐式提交的SQL语句
  10. 六、Mysql体系架构、存储引擎、临时表