传送门

可以二分变成直接求最大链覆盖,因为可以重复经过一个点
floydfloydfloyd传递闭包就可以了

#include<bits/stdc++.h>
using namespace std;
#define ll long long
inline int read(){char ch=getchar();int res=0,f=1;while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}while(isdigit(ch))res=res*10+(ch^48),ch=getchar();return res*f;
}
const int N=55;
const int M=505;
int f[M][M];
int mat[M],val[M],n,m,mx;
bool vis[M];
inline void floyd(){for(int k=1;k<=m;k++){for(int i=1;i<=m;i++){for(int j=1;j<=m;j++){f[i][j]|=f[i][k]&f[k][j];}}}
}
inline bool dfs(int u,int k){for(int i=1;i<=m;i++)if(val[i]<k&&f[u][i]&&!vis[i]){vis[i]=1;if((!mat[i])||dfs(mat[i],k)){mat[i]=u;return 1;}}return 0;
}
inline bool check(int x){memset(mat,0,sizeof(mat));int tot=0,num=0;for(int i=1;i<=m;i++){if(val[i]<x){num++,memset(vis,0,sizeof(vis));if(dfs(i,x))tot++;}}return num-tot<=n+1;
}
int main(){n=read(),m=read();for(int i=1;i<=m;i++){val[i]=read();int k=read();mx=max(mx,val[i]);for(int j=1;j<=k;j++){int v=read();f[i][v]=1;}}floyd();int l=1,r=mx,res=mx;while(l<=r){int mid=(l+r)>>1;if(check(mid))res=mid,l=mid+1;else r=mid-1;}if(res==mx)puts("AK");else cout<<res;
}

转载于:https://www.cnblogs.com/stargazer-cyk/p/11145651.html

【BZOJ5335】【TJOI2018】—智力竞赛(floyd传递闭包+二分图匹配)相关推荐

  1. [TJOI2018]智力竞赛 (匈牙利)

    description 题目描述 小豆报名参加智力竞赛,他带上了 n个好朋友作为亲友团一块来参加比赛. 比赛规则如下:一共有 m道题目,每个人都有 1 次答题机会,每次答题为选择一道题目回答,在回答正 ...

  2. POJ1683 Puzzlestan ——Floyd传递闭包+Dfs

    好久没写Dfs了,拿来练手. WA了一次,没有判断中间的情况-- 解法:先用Floyd传递闭包处理哪些点一定要在一起.哪些点一定不能在一起,六重循环. 然后深搜,res[i][j]表示1,i这个物品在 ...

  3. 【POJ - 2594】Treasure Exploration(floyd传递闭包 + 最小路径覆盖,图论)

    题干: Have you ever read any book about treasure exploration? Have you ever see any film about treasur ...

  4. NOI图论算法:二分图匹配

    二分图匹配 算法竞赛入门经典训练指南+陈锋+ch5.5_二分图的匹配 https://www.bilibili.com/video/BV1j5411x7PU SWPU-ACM每周算法讲堂-匈牙利算法 ...

  5. CIA3 NOI接站(tarjan缩环+Floyd传递闭包+可相交最小路径覆盖)

    可以发现,题目求得就是一个可相交最小路径覆盖,但是有环.所以我们先用tarjan把环都缩掉,然后Floyd传递闭包,求二分图最大匹配,答案就是scc-ans. #include <cstdio& ...

  6. HDU 2448 Mining Station on the Sea(Floyd+最优匹配)

    HDU 2448 Mining Station on the Sea(Floyd+最优匹配) http://acm.hdu.edu.cn/showproblem.php?pid=2448 题意: 给你 ...

  7. [bzoj1143][二分图匹配]祭祀

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

  8. Dinic二分图匹配 || Luogu P3386

    题面:[模板]二分图匹配 思路:Dinic实现二分图匹配,要建一个超级源点(S)和超级汇点(T),分别定为N+M+1和N+M+2 然后S去和N中的数建正边和反边,正边权值为1,反边权值为0:M中的数去 ...

  9. 二分图匹配匈牙利算法DFS实现

    1 /*==================================================*\ 2 | 二分图匹配(匈牙利算法DFS 实现) 3 | INIT: g[][]邻接矩阵; ...

最新文章

  1. 用xshell传输jdk_在JDK 9中将InputStream传输到OutputStream
  2. debian 安装java_debian9安装jdk1.8
  3. Java阶段2-02JS:08ECMAScript BOM DOM:
  4. OpenStack 的诞生
  5. Leetcode学习成长记:天池leetcode基础训练营Task02链表
  6. 三维重建_基于RGB-D相机的三维重建总览(静态动态)
  7. u3d_fw 框架使用
  8. Unity 集成admob 出错AAPT: error :unexpected element <queries> found in <manifest>
  9. Solr8.0速成系列 | Solr整合IKAnalyzer分词器 05
  10. meta标签中的name属性和http-equiv属性解析
  11. 【Word】如何设置交叉引用标注参考文献与设置上标
  12. WUSTOJ 1923 一笔画 【回溯】
  13. 力扣(141.21)补9.1
  14. stored-program Computer/von Neumann Architecture 冯诺依曼体系结构
  15. javax.el.PropertyNotFoundException:类型[com.ex.spring.entity.Dept]上找不到属性[dNo]
  16. 李炎恢ECMAScript6 / ES6+(一)
  17. 京东7天无理由退货换货运费应该谁来出是商家支付还是买家支付?
  18. Tello SDK 开发避坑指南(持续更新)
  19. 人+山=仙,人+谷=俗
  20. Java公安项目系统_劲爆︱开源众包和公安行业强强联手,推出系列好项目。

热门文章

  1. Chrome 私人珍藏-stylus插件实现个性化百度界面定制
  2. 模拟电路技术之基础知识(十)
  3. opencv中的imread不支持中文路径的解决办法
  4. 【POJ3126 Prime Path】【POJ 3087 Shuffle'm Up】【UVA 11624 Fire!】【POJ 3984 迷宫问题】
  5. 第九周项目实践1 二叉树的链式存储及基本运算 算法库
  6. plot、bar、stem、area函数绘图
  7. Python读文件要用到的一些东西
  8. Python open读写文件实现脚本
  9. k近邻法matlab_机器学习系列(一)K近邻算法(KNN,KNearestNeigh
  10. JavaScript观察者模式