loj6002网络流 24 题 最小路径覆盖 最大流
来源:互联网 发布:win域名退出中国 编辑:程序博客网 时间:2024/05/29 04:27
[每日一题网络流]
最小路径覆盖=n-最大匹配。
直接跑就好了。
具体解释写一下,大佬就跳过吧:
我们把每个点拆成入和出两个,考虑如何把两个相邻路径合并,那么就是匹配。那么最小路径覆盖中的路径起点和重点肯定就是没有被匹配的。所以答案就是n-最大匹配。
#include<cstdio>#include<algorithm>#include<cstring>#include<queue>#define T n+m+2#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;const int N=2e6+5;int n,m,tot=1;const int inf=0x7fffffff;int head[N],next[N],go[N],val[N];int to[N],dis[N],ans;bool mark[N];queue<int> q;inline void add(int x,int y,int z){ go[++tot]=y; val[tot]=z; next[tot]=head[x]; head[x]=tot;}inline void ins(int x,int y,int z){ add(x,y,z); add(y,x,0);}inline bool bfs(){ memset(dis,-1,sizeof(dis)); //memset(vis,0,sizeof(vis)); dis[0]=0; q.push(0); while (!q.empty()) { int x=q.front(); q.pop(); for(int i=head[x];i;i=next[i]) { int v=go[i]; if (val[i]&&dis[v]==-1) { dis[v]=dis[x]+1; //vis[v]=1; q.push(v); } } } return dis[T]!=-1;}inline int dfs(int x,int f){ if (x==T)return f; int w,used=0; for(int i=head[x];i;i=next[i]) { int v=go[i]; if (dis[v]==dis[x]+1&&val[i]) { w=f-used; w=dfs(v,min(w,val[i])); if (w) { to[x]=v; if (v-n>0)mark[v-n]=1; } val[i]-=w; val[i^1]+=w; used+=w; if (used==f)return f; } } if (!used)dis[x]=-1; return used;}inline void dinic(){ while (bfs()) { ans-=dfs(0,inf); }}int main(){ scanf("%d%d",&n,&m); fo(i,1,m) { int x,y; scanf("%d%d",&x,&y); ins(x,y+n,inf); } fo(i,1,n)ins(0,i,1); fo(i,1,n)ins(i+n,T,1); ans=n; dinic(); fo(i,1,n) { if (mark[i])continue; printf("%d",i); int k=i; while (to[k]) { printf(" %d",to[k]-n); k=to[k]-n; } printf("\n"); } printf("%d\n",ans); return 0;}
阅读全文
0 0
- loj6002网络流 24 题 最小路径覆盖 最大流
- loj6002「网络流 24 题」最小路径覆盖(最小路径覆盖+二分图最大匹配)
- [网络流24题] 03 最小路径覆盖问题(有向无环图最小路径覆盖,网络最大流)
- LOJ6002 「网络流 24 题
- 【网络流二十四题 最小路径覆盖问题】【DAG 最小路径覆盖->最大流】
- [网络流24题] 04 魔术球问题 (有向无环图最小路径覆盖, 最大流)
- [网络流24题][CODEVS1904]最小路径覆盖问题(最大流||匈牙利算法)
- 网络流 最小路径覆盖 二分图最大匹配
- 线性规划与网络流24题の3 最小路径覆盖问题(最小路径覆盖)
- 网络流24题3最小路径覆盖问题(洛谷 P2764 最小路径覆盖问题)
- 【网络流】最小路径覆盖
- [网络流24题 #3]最小路径覆盖问题
- [网络流24题] 最小路径覆盖问题
- kyeremal-网络流24题T3-最小路径覆盖问题
- 【二分匹配】 [网络流24题] 最小路径覆盖问题
- code vs [网络流24题]最小路径覆盖问题
- 【网络流24题】最小路径覆盖问题
- [网络流24题]最小路径覆盖问题
- 升级 phpStudy 中 MySQL 版本至 5.7.17
- svn分支、主干合并
- HDU 1760 A New Tetris Game
- 深入理解 ruby 中的 eval 与 binding
- 获取多个随机生成的不重复的6位数,不重复的6位数或8位数串
- loj6002网络流 24 题 最小路径覆盖 最大流
- 线程同步(多线程协同使用有限资源)
- iOS 使用ProtocolBuffer 时报 Protocol message end-group tag did not match expected tag.
- JDK+Tomcat搭建JSP运行环境--JSP基础
- 010-logback中过滤器filter
- Kafka日志存储系统和offset查找逻辑
- Vuejs computed get set 计算属性
- 自己动手从0到1写嵌入式操作系统
- QT开发(三十九)——GraphicsView框架