JZOJ 3423.Vani和Cl2捉迷藏 & [CTSC2008]祭祀
\(\text{Problem}\)
求一个 \(DAG\) 的最长反链
\(\text{Solution}\)
由 \(Dilworth\) 定理只最长反链等于最小链覆盖
而原图的链是可相交的,所以我们先做一遍 \(Floyd\) 传递闭包,使得原图的链不必相交即可覆盖
这样就转化为最小链覆盖(顶点不可相交)
于是用网络流经典模型解决
\(\text{Code}\)
#include<cstdio>
#include<iostream>
using namespace std;
const int N = 405;
int n, m, h[N], S, T, g[N][N];
struct edge{
int to, nxt, w;
}e[100005];
inline void add(int u, int v, int w)
{
static int tot = 1;
e[++tot] = edge{v, h[u], w}, h[u] = tot;
}
int Q[N], cur[N], dep[N];
inline int bfs()
{
for(int i = S; i <= T; i++) cur[i] = h[i], dep[i] = 0;
int head = 0, tail = 1;
Q[1] = S, dep[S] = 1;
while (head < tail)
{
int now = Q[++head];
for(int i = h[now]; i; i = e[i].nxt)
{
int v = e[i].to;
if (dep[v] || !e[i].w) continue;
dep[v] = dep[now] + 1, Q[++tail] = v;
}
}
return dep[T];
}
int dfs(int x, int mi)
{
if (x == T || mi <= 0) return mi;
int flow = 0;
for(int i = cur[x]; i; i = e[i].nxt)
{
cur[x] = i;
int v = e[i].to;
if (dep[v] ^ (dep[x] + 1) || !e[i].w) continue;
int f = dfs(v, min(mi, e[i].w));
if (f <= 0) continue;
flow += f, mi -= f, e[i].w -= f, e[i ^ 1].w += f;
if (mi <= 0) break;
}
return flow;
}
int dinic()
{
int res = 0;
while (bfs()) res += dfs(S, N);
return res;
}
int main()
{
scanf("%d%d", &n, &m);
for(int i = 1, x, y; i <= m; i++) scanf("%d%d", &x, &y), g[x][y] = 1;
for(int k = 1; k <= n; k++)
for(int i = 1; i <= n; i++)
if (g[i][k])
for(int j = 1; j <= n; j++)
if (g[k][j]) g[i][j] = 1;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
if (g[i][j]) add(i, j + n, 1), add(j + n, i, 0);
T = 2 * n + 1;
for(int i = 1; i <= n; i++) add(S, i, 1), add(i, S, 0), add(i + n, T, 1), add(T, i + n, 0);
printf("%d\n", n - dinic());
}
JZOJ 3423.Vani和Cl2捉迷藏 & [CTSC2008]祭祀的更多相关文章
- POJ1422 Air Raid 和 CH6902 Vani和Cl2捉迷藏
Air Raid Language:Default Air Raid Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9547 A ...
- 【JZOJ3423】Vani和Cl2捉迷藏&【BZOJ1143】祭祀river
description vani和cl2在一片树林里捉迷藏-- 这片树林里有N座房子,M条有向道路,组成了一张有向无环图. 树林里的树非常茂密,足以遮挡视线,但是沿着道路望去,却是视野开阔.如果从房子 ...
- 「Poetize5」Vani和Cl2捉迷藏
描述 Description 这片树林里有N座房子,M条有向道路,组成了一张有向无环图.树林里的树非常茂密,足以遮挡视线,但是沿着道路望去,却是视野开阔.如果从房子A沿着路走下去能够到达B,那么在A和 ...
- [tyvj1957 Poetize5] Vani和Cl2捉迷藏 (最小路径可重点覆盖+二分图最大匹配)
传送门 Description 这片树林里有N座房子,M条有向道路,组成了一张有向无环图. 树林里的树非常茂密,足以遮挡视线,但是沿着道路望去,却是视野开阔.如果从房子A沿着路走下去能够到达B,那么在 ...
- codevs 2494 Vani和Cl2捉迷藏
/* 一开始大意了 以为和bzoj上的祭祀是一样的(毕竟样例都一样) 这里不知相邻的点可以相互到达 间接相连的也可以到达 所以floyed先建立一下关系 再跑最大独立集 下面贴一下95 和 100的代 ...
- CODE[VS]2494 Vani和Cl2捉迷藏
原题链接 这里有一个结论:最多能选取的藏身点个数等于最小路径可重复点覆盖的路径总数. 所以我们可以先传递闭包,然后求最小路径点覆盖即可. #include<cstdio> #include ...
- joyoi1957 「Poetize5」Vani和Cl2捉迷藏
最小路径可重点覆盖.先传递闭包,然后拆点,\(n-\)最大匹配,看算法竞赛进阶指南. #include <iostream> #include <cstring> #inclu ...
- BZOJ 1143 1143: [CTSC2008]祭祀river 最长反链
1143: [CTSC2008]祭祀river Description 在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在水面上,奉龙王为神.每逢重大庆典, Y族都会在水面上举办盛大的祭祀活动. ...
- BZOJ 1143: [CTSC2008]祭祀river 最长反链
1143: [CTSC2008]祭祀river Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline ...
- Bzoj 2718: [Violet 4]毕业旅行 && Bzoj 1143: [CTSC2008]祭祀river 传递闭包,二分图匹配,匈牙利,bitset
1143: [CTSC2008]祭祀river Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1878 Solved: 937[Submit][St ...
随机推荐
- 【接口测试】Postman(一)--接口测试知识准备
1.0 前言 应用程序编程接口(Application Programming Interface, API)是这些年来最流行的技术之一,强大的Web应用程序和领先的移动应用程序都离不开后端强大的 ...
- 【翻译】rocksdb调试指引
rocksdb调试指引 翻译自官方wiki:https://github.com/facebook/rocksdb/wiki/RocksDB-Tuning-Guide 转载请注明出处:https:// ...
- 使用Typora
Markdown学习 标题:#+空格+名称 二级标题 二级标题:##+空格+名称 三级标题 几级标题以此类推,最多支持到六级标题 字体 Hello,world! 变粗体:一句话的前后加上两个** 变斜 ...
- PyQt4编写界面的两种方式
PyQt4编写界面的两种方式 应用PyQt4开发图形化界面有两种方式,一种是直接通过QtDesigner通过提供的窗口部件拖拽进行GUI创建,另外一种是直接进行编程实现. 第一种,QtDesigner ...
- day37-文件上传和下载
文件上传下载 1.基本介绍 在Web应用中,文件上传和下载是非常常见的功能 如果是传输大文件一般用专门的工具或者插件 文件上传和下载需要用到两个包:commons-fileupload.jar和com ...
- 在IQuery中使用除法提示"Numeric value does not fit in a System.Decimal"
起因 有个需求是需要汇总(单耗=单件用量*1+损耗率)的值,由于现在我们数据库中存的XX率都是放大了一百倍(即10%数据库存的是10),然后就很自然的写了个linq汇总如下 materialOrder ...
- 第六节 FAF与GP不工作保护区的绘制
飞行程序设计软件实践 前一篇文章中,通过风标设计2023插件,我们在CAD中绘制了FAP方式下的精密进近保护区. 接着这个话题我们继续来看一下FAF方式下的保护区应该怎样绘制,以及OAS参数的其它用法 ...
- [python] python-pinyin库
python-pinyin库是一个汉字拼音转换工具,其主要功能有: 根据词组智能匹配最正确的拼音. 支持多音字. 简单的繁体支持, 注音支持. 支持多种不同拼音风格. 安装命令为:pip instal ...
- bbs项目(部分讲解)
文章评论业务完善 提交评论 评论框里面的内容会清空 然后页面会有一个临时评论样式出现 页面刷新才会出现评论楼样式 研究子评论特性 每个评论右侧都应该有回复按钮 点击就可以填写子评论 点击回复按钮具体动 ...
- 聊聊Cookie、Session、Token 背后的故事
摘要:Cookie.Session.Token 这三者是不同发展阶段的产物 本文分享自华为云社区<Cookie.Session.Token 背后的故事>,作者: 龙哥手记. 1. 网站交互 ...