bzoj 1143: [CTSC2008]祭祀river
Description
Input
Output
第一行包含一个整数K,表示最多能选取的祭祀点的个数。
Sample Input
1 2
3 4
3 2
4 2
Sample Output
【样例说明】
在样例给出的水系中,不存在一种方法能够选择三个或者三个以上的祭祀点。包含两个祭祀点的测试点的方案有两种:
选择岔口1与岔口3(如样例输出第二行),选择岔口1与岔口4。
水流可以从任意岔口流至岔口2。如果在岔口2建立祭祀点,那么任意其他岔口都不能建立祭祀点
但是在最优的一种祭祀点的选取方案中我们可以建立两个祭祀点,所以岔口2不能建立祭祀点。对于其他岔口
至少存在一个最优方案选择该岔口为祭祀点,所以输出为1011。
似乎少了一问方案数统计啊。。
这题是一个可重的最小路径覆盖问题,我们用floyd预处理出各个点之间的联通性,然后直接跑匈牙利算法即可
#include<cstdio>
#include<cstdio>
#include<cstring>
using namespace std;
struct map
{int s,t;int next;
}a[1000001];
int head[100001];
int edge;
bool v[100001];
int lk[100001];
int ans;
int n;
inline void add(int s,int t)
{a[edge].next=head[s];head[s]=edge;a[edge].s=s;a[edge].t=t;
}
inline bool find(int d)
{int i;for(i=head[d];i!=0;i=a[i].next){int t=a[i].t;if(!v[t]){v[t]=true;if(lk[t]==0||find(lk[t])){lk[t]=d;return true;}}}return false;
}
inline int work()
{int i;for(i=1;i<=n;i++){memset(v,0,sizeof(v));if(find(i))ans++;}return ans;
}
int mp[101][101];
int main()
{int m;scanf("%d%d",&n,&m);int i,j,k,s,t;for(i=1;i<=m;i++){scanf("%d%d",&s,&t);mp[s][t]=1;}for(k=1;k<=n;k++){for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(mp[i][k]==1&&mp[k][j]==1)mp[i][j]=1;}}}for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(mp[i][j]){edge++;add(i,j+n);}}}printf("%d\n",n-work());return 0;
}
bzoj 1143: [CTSC2008]祭祀river相关推荐
- 最长反链(bzoj 1143: [CTSC2008]祭祀river)
题目描述: 给你一个n个点m条边的有向无环图,求出最大点集满足其中任意两点间都不能存在路径 也就是对于所有的x, y∈S,x不能到达y,y也不能到达x 对于有向无环图(DAG): 链:一些点的集合,链 ...
- 1143: [CTSC2008]祭祀river
Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4018 Solved: 2048 [Submit][Status][Discuss] Descri ...
- BZOJ.1143.[CTSC2008]祭祀(Dilworth定理 最大流ISAP)
题目链接 题目是求最长反链,反链指点集内任意两点不能互相到达. 根据Dilworth定理,在DAG中,\[最长反链 = 最小路径覆盖 = V - 最大匹配数\] 用Floyd求一遍传递闭包后,在所有可 ...
- bzoj1143[CTSC2008]祭祀river
bzoj1143[CTSC2008]祭祀river 题意: Y族居住地水系是一个由岔口和河道组成的网络.每条河道连接着两个岔口,并且水在河道内按照一个固定的方向流动.水系中不会有环流.由于人数众多的原 ...
- BZOJ1143[CTSC2008]祭祀river 偏序集及Dilworth定理
这里讲一下我对偏序集的认识 如果有偏差可以评论我 我会修改 一:定义 (度娘上copy来的 不想看的可以跳过 设R是非空集合A上的一个二元关系,若R满足: 自反性.反对称性.传递性,则称R为A ...
- [CTSC2008]祭祀river
Description 在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在水面上,奉龙王为神.每逢重大庆典,Y族都会在水面上举办盛大的祭祀活动.我们可以把Y族居住地水系看成一个由岔口和河道组成的 ...
- 【bzoj1143】[CTSC2008]祭祀river Floyd+网络流最小割
在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在水面上,奉龙王为神.每逢重大庆典, Y族都 会在水面上举办盛大的祭祀活动.我们可以把Y族居住地水系看成一个由岔口和河道组成的网络.每条河道连接着 ...
- BZOJ1143: [CTSC2008]祭祀river 网络流_Floyd_最大独立集
Description 在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在水面上,奉龙王为神.每逢重大庆典, Y族都 会在水面上举办盛大的祭祀活动.我们可以把Y族居住地水系看成一个由岔口和河道组 ...
- [bzoj1143][CTSC2008]祭祀river——DAG上最长反链,Dilworth定理,最大二分图匹配,Floyd
题目大意: 给定一个DAG图,求最长反链(即一个点集,其中任意点两两不可以相互到达). 思路: 一开始我其实是想用求最大独立集的方法去求的.但是并不会(好像也过不去). 题目所要求的是最长反链,需要用 ...
最新文章
- 全卷积神经网路【U-net项目实战】肺结节分割案例分析:DSB3Tutorial
- 合理持仓 静待市场方向选择
- C#中方法的参数四种类型(值参数、ref、out、params)详解
- LayoutInflater中调用系统服务
- 促进新一代人工智能产业发展三年行动计划_浙江提出冷链物流创新发展三年行动计划 力争带动产业投资约1000亿元...
- mongodb shell基础命令
- ASP.NET MVC ActionFilter自定义过滤器异常过滤器过滤器用法
- python新手入门总结_初学python的操作难点总结(新手必看篇)
- 为EF DbContext生成的实体添加注释(T5模板应用)[转]
- Solve one floodlight install problem
- java中prepend的用法_jQuery中prepend()方法用法实例
- 如何画分子结构的立体图
- 效果图色彩与色彩搭配原理
- 最受程序员欢迎的深度学习框架出新版啦(文末留言赠书)
- 直击|咪蒙、才华有限青年注销 旗下公众号清空或停更
- 微信小程序期末大作业 记单词小程序 适合初学者学习使用
- flash 的鼠标事件详解
- 浮躁的社会浮躁的自己
- Appium基础 — Appium Inspector定位工具(一)
- s5p4418的uboot开通网络支持
热门文章
- matlab水果图片,基于MATLAB的水果识别的数字图像处理教程.docx
- 如何判断投影坐标是 3 度带还是 6 度带?如何计算中央子午线经度?
- vpc自建服务器,虚拟私有云VPC搭建IPv6网络教程
- Angular-------持续学习(angular8.0)
- 光的粒子说(光电效应/康普顿效应)
- 燕山大学大学物理上册复习资料
- 媒体报道的要害在于“真假”而不是“善恶”
- android人脸解锁亮屏,EMUI 8.0升级加入全新人脸解锁 抬腕亮屏功能:快来看看如何开启...
- 冬令时 java_java处理 夏令时、冬令时问题
- 一个简单的连续变焦红外镜头的从零开始的设计过程(zemax)(一)