Description
  在遥远的东方,有一个神秘的民族,自称Y族。他们世代居住在水面上,奉龙王为神。每逢重大庆典, Y族都
会在水面上举办盛大的祭祀活动。我们可以把Y族居住地水系看成一个由岔口和河道组成的网络。每条河道连接着
两个岔口,并且水在河道内按照一个固定的方向流动。显然,水系中不会有环流(下图描述一个环流的例子)。

由于人数众多的原因,Y族的祭祀活动会在多个岔口上同时举行。出于对龙王的尊重,这些祭祀地点的选择必
须非常慎重。准确地说,Y族人认为,如果水流可以从一个祭祀点流到另外一个祭祀点,那么祭祀就会失去它神圣
的意义。族长希望在保持祭祀神圣性的基础上,选择尽可能多的祭祀的地点。
Input
第一行包含两个用空格隔开的整数N、M,分别表示岔口和河道的数目,岔口从1到N编号。
接下来M行,每行包含两个用空格隔开的整数u、v,
描述一条连接岔口u和岔口v的河道,水流方向为自u向v。
N≤100M≤1000
Output
第一行包含一个整数K,表示最多能选取的祭祀点的个数。

Sample Input
4 4

1 2

3 4

3 2

4 2
Sample Output
2


很明显的找一条最长反链。

然后最长反链=最小链覆盖。注意是最小链覆盖而不是最小路径覆盖。

所以我们先跑一次传递闭包即可。

AC代码:

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
using namespace std;
const int inf=0x3f3f3f3f;
const int N=210,M=1e6+10;
int n,m,s,t,h[N],g[N][N];
int head[N],nex[M],to[M],w[M],tot=1;
inline void ade(int a,int b,int c){to[++tot]=b; nex[tot]=head[a]; w[tot]=c; head[a]=tot;
}
inline void add(int a,int b,int c){ade(a,b,c);  ade(b,a,0);}
inline int bfs(){queue<int> q;    q.push(s);  memset(h,0,sizeof h);   h[s]=1;while(q.size()){int u=q.front();   q.pop();for(int i=head[u];i;i=nex[i]){if(w[i]&&!h[to[i]]){h[to[i]]=h[u]+1;  q.push(to[i]);}}}return h[t];
}
int dfs(int x,int f){if(x==t) return f;   int fl=0;for(int i=head[x];i&&f;i=nex[i]){if(w[i]&&h[to[i]]==h[x]+1){int mi=dfs(to[i],min(f,w[i]));w[i]-=mi,w[i^1]+=mi,fl+=mi,f-=mi;}}if(!fl)  h[x]=-1;return fl;
}
inline int dinic(){int res=0;while(bfs())  res+=dfs(s,inf);return res;
}
void floyd(){for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)g[i][j]|=(g[i][k]&g[k][j]);
}
signed main(){cin>>n>>m;    t=n*2+1;for(int i=1,a,b;i<=m;i++)  cin>>a>>b,g[a][b]=1;for(int i=1;i<=n;i++)   add(s,i,1),add(i+n,t,1);floyd();for(int i=1;i<=n;i++)   for(int j=1;j<=n;j++)    if(g[i][j]!=0) add(i,j+n,1);cout<<n-dinic();return 0;
}

BZOJ-1143 [CTSC2008]祭祀相关推荐

  1. 最长反链(bzoj 1143: [CTSC2008]祭祀river)

    题目描述: 给你一个n个点m条边的有向无环图,求出最大点集满足其中任意两点间都不能存在路径 也就是对于所有的x, y∈S,x不能到达y,y也不能到达x 对于有向无环图(DAG): 链:一些点的集合,链 ...

  2. bzoj 1143: [CTSC2008]祭祀river

    Description 在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在水面上,奉龙王为神.每逢重大庆典, Y族都 会在水面上举办盛大的祭祀活动.我们可以把Y族居住地水系看成一个由岔口和河道组 ...

  3. BZOJ.1143.[CTSC2008]祭祀(Dilworth定理 最大流ISAP)

    题目链接 题目是求最长反链,反链指点集内任意两点不能互相到达. 根据Dilworth定理,在DAG中,\[最长反链 = 最小路径覆盖 = V - 最大匹配数\] 用Floyd求一遍传递闭包后,在所有可 ...

  4. 1143: [CTSC2008]祭祀river

    Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4018  Solved: 2048 [Submit][Status][Discuss] Descri ...

  5. bzoj1143[CTSC2008]祭祀river

    bzoj1143[CTSC2008]祭祀river 题意: Y族居住地水系是一个由岔口和河道组成的网络.每条河道连接着两个岔口,并且水在河道内按照一个固定的方向流动.水系中不会有环流.由于人数众多的原 ...

  6. bzoj 1143 bzoj 2718 最长反链

    题意:n个点,m条有向边,求最长反链 又到了涨姿势的时候了...(果然蒟蒻) DAG中,有如下的一些定义和性质: 链:一条链是一些点的集合,链上任意两个点x, y,满足要么 x 能到达 y ,要么 y ...

  7. BZOJ1143[CTSC2008]祭祀river 偏序集及Dilworth定理

    这里讲一下我对偏序集的认识   如果有偏差可以评论我  我会修改 一:定义 (度娘上copy来的  不想看的可以跳过 设R是非空集合A上的一个二元关系,若R满足: 自反性.反对称性.传递性,则称R为A ...

  8. BZOJ 1143 祭祀

    Description 在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在水面上,奉龙王为神.每逢重大庆典, Y族都会在水面上举办盛大的祭祀活动.我们可以把Y族居住地水系看成一个由岔口和河道组成 ...

  9. BZOJ 1143 祭祀 river(最大独立集)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1143 题意:给出一个有向无环图.在其中找出一个最大的点集使得点集中任意两个点之间不可达. ...

  10. BZOJ 1143 祭祀river 最长反链

    http://vfleaking.blog.163.com/blog/static/1748076342012918105514527/大前提:在有向无环图中链是一个点的集合,这个集合中任意两个元素v ...

最新文章

  1. 一个用微软官方的OpenXml读写Excel 目前网上不太普及的方法。
  2. 九宫格抽奖转盘源码分析
  3. http反向代理调度算法追朔
  4. java表驱动法索引访问_表驱动法 - SegmentFault 思否
  5. linux 云主机 卡顿 排查过程
  6. 蓝桥杯-数字三角形 (java)
  7. APACHE服务器出现No input file specified.的完美解决方案
  8. 天涯共此式 有AI月更圆
  9. js学习日记-new Object和Object.create到底干了啥
  10. 未来的电视是什么样子?
  11. 数据结构与算法深入学习_我最喜欢的免费课程,用于深入学习数据结构和算法...
  12. RSA私钥文件(PEM-PKCS#1)解析
  13. java调python报错Cannot create PyString with non-byte value
  14. mysql数据库备份和还原的命令_Mysql数据库备份和还原常用的命令
  15. 数值分析(2)-误差
  16. MySQL数据库锁机制
  17. Flutter String 常用方法
  18. linux 下动手实现bash -lR 命令
  19. 嵌入式主板有哪些特点?
  20. 图像处理随笔之峰值信噪比(peak signal to noise ratio)

热门文章

  1. 电脑允许qq对计算机更改,qq怎么改成电脑在线
  2. 香港大学硕士计算机专业,香港大学计算机硕士
  3. 9-1 判断字符的类型及原理的剖析(部分待定)
  4. xv6 - lab0 - 操作系统组织
  5. 在Windows2008 R2 服务器上使用maven私有仓库
  6. 挂起函数suspend
  7. 墨画子卿第二章第1节:再入识海
  8. vscode关键字设置斜体
  9. 天之骄子还是平凡之路
  10. 洛谷 P1088 火星人