洛谷 [P2764]最小路径覆盖问题
二分图应用模版
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cstdlib>
#include <queue>
using namespace std;
const int MAXN=400,MAXM=50005;
int head[MAXN],nume,n,m,maxflow,s,t,cur[MAXN],dep[MAXN];
queue<int>q;
struct edge{
	int to,nxt,cap,flow;
}e[MAXM];
void adde(int from,int to,int cap){
	e[++nume].to=to;
	e[nume].cap=cap;
	e[nume].nxt=head[from];
	head[from]=nume;
}
bool bfs(){
	memset(dep,0,sizeof(dep));
	q.push(s);dep[s]=1;
	while(!q.empty()){
		int u=q.front();q.pop();
		for(int i=head[u];i;i=e[i].nxt){
			int v=e[i].to;
			if(!dep[v]&&e[i].flow<e[i].cap){
				dep[v]=dep[u]+1;
				q.push(v);
			}
		}
	}
	return dep[t];
}
int dfs(int u,int flow){
	if(u==t) return flow;
	int tot=0;
	for(int &i=cur[u];i&&tot<flow;i=e[i].nxt){
		int v=e[i].to;
		if(dep[v]==dep[u]+1&&e[i].flow<e[i].cap){
			if(int t=dfs(v,min(flow-tot,e[i].cap-e[i].flow))){
				e[i].flow+=t;
				e[((i-1)^1)+1].flow-=t;
				tot+=t;
			}
		}
	}
	return tot;
}
void dinic(){
	while(bfs()){
		for(int i=s;i<=t;i++) cur[i]=head[i];
		maxflow+=dfs(s,0x3f3f3f3f);
	}
}
bool f[MAXN];
void print(int u){
	printf("%d ",u);
	f[u]=1;
	for(int i=head[u];i;i=e[i].nxt){
		int v=e[i].to;
		if(v&&!f[v-n]&&e[i].flow){
			print(v-n);
			return;
		}
	}
}
int main(){
	cin>>n>>m;
	s=0;t=n*2+1;
	for(int i=1;i<=m;i++){
		int u,v;
		scanf("%d%d",&u,&v);
		adde(u,v+n,1);adde(v+n,u,0);
	}
	for(int i=1;i<=n;i++){
		adde(s,i,1);adde(i,s,0);
		adde(i+n,t,1);adde(t,i+n,0);
	}
	dinic();
	for(int i=1;i<=n;i++){
		if(!f[i]) print(i),printf("\n");
	}
	printf("%d\n",n-maxflow);
}
												
											洛谷 [P2764]最小路径覆盖问题的更多相关文章
- 洛谷 P2764 最小路径覆盖问题 解题报告
		
P2764 最小路径覆盖问题 问题描述: 给定有向图\(G=(V,E)\).设\(P\) 是\(G\) 的一个简单路(顶点不相交)的集合.如果\(V\) 中每个顶点恰好在\(P\) 的一条路上,则称\ ...
 - 洛谷 P2764 最小路径覆盖问题【最大流+拆点+路径输出】
		
题目链接:https://www.luogu.org/problemnew/show/P2764 题目描述 «问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V ...
 - 洛谷P2764 最小路径覆盖问题
		
有向无环图的最小路径点覆盖 最小路径覆盖就是给定一张DAG,要求用尽量少的不相交的简单路径,覆盖有向无环图的所有顶点. 有定理:顶点数-路径数=被覆盖的边数. 要理解的话可以从两个方向: 假设DAG已 ...
 - 【刷题】洛谷 P2764 最小路径覆盖问题
		
题目描述 «问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任何一个顶点开 ...
 - 洛谷P2764 最小路径覆盖问题(最大流)
		
传送门 先说做法:把原图拆成一个二分图,每一个点被拆成$A_i,B_i$,若原图中存在边$(u,v)$,则连边$(A_u,B_v)$,然后$S$对所有$A$连边,所有$B$对$T$连边,然后跑一个最大 ...
 - 洛谷 P2764 最小路径覆盖问题【匈牙利算法】
		
经典二分图匹配问题.把每个点拆成两个,对于原图中的每一条边(i,j)连接(i,j+n),最小路径覆盖就是点数n-二分图最大匹配.方案直接顺着匹配dsf.. #include<iostream&g ...
 - 洛谷 P2764(最小路径覆盖=节点数-最大匹配)
		
给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任何一个顶点开始,长度也是任意的,特别 ...
 - 洛谷P2764 最小路径覆盖问题(二分图)
		
题意 给出一张有向无环图,求出用最少的路径覆盖整张图,要求路径在定点处不相交 输出方案 Sol 定理:路径覆盖 = 定点数 - 二分图最大匹配数 直接上匈牙利 输出方案的话就不断的从一个点跳匹配边 # ...
 - 洛谷-p2764(最小路径覆盖)(网络流24题)
		
#include<iostream> #include<algorithm> #include<queue> #include<cstring> #in ...
 
随机推荐
- HDU2289-Cup-二分
			
Cup Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
 - c+(内存)
			
内存是程序运行的基础.所有正在运行的代码都保存在内存里面.内存需要处理各种各样的数据,包括键盘的数据.鼠标的数据.usb的数据.串口的数据.摄像头的数据,那么这些数据经过程序的处理之后,就要进行输出到 ...
 - 微信小程序初使心得【微信小程序快速入门】
			
摘要: 2016年推出微信小程序,时至今日,历经几个版本的更新,已形成了相对实用和稳定的服务平台.本文简单的介绍了微信小程序的入门用法,今后会继续关注和实践. 2016年推出微信小程序,时至今日,历经 ...
 - 【Zigbee技术入门教程-号外】基于Z-Stack协议栈的抢答系统
			
[Zigbee技术入门教程-号外]基于Z-Stack协议栈的抢答系统 广东职业技术学院 欧浩源 一.引言 2017年全国职业院校技能大赛"物联网技术应用"赛项中任务三题2的 ...
 - [国嵌攻略][182][Sqlite嵌入式数据库移植]
			
数据库系统构成 在计算机系统中,保存数据的方式一般有两种: 1.普通文件方式 2.数据库方式 相比于普通文件方式,使用数据库来管理大批量数据具有更高的效率与安全性. 数据库系统一般由三个部分构成 1. ...
 - zzuli oj 1135 算菜价
			
题目: Description 妈妈每天都要出去买菜,但是回来后,兜里的钱也懒得数一数,到底花了多少钱真是一笔糊涂帐.现在好了,作为好儿子(女儿)的你可以给她用程序算一下了,呵呵. Input 输入含 ...
 - destoon标签
			
http://blog.csdn.net/oYuHuaChen/article/details/54601509 ------------
 - PHP闭包Closure与array_reduce结合的一个范例
			
最近在研究laravel5.5的源代码,发现了其中的一段代码觉得挺有意思! 文件:vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.p ...
 - IOS学习笔记25—HTTP操作之ASIHTTPRequest(一)
			
ASIHTTPRequest是一个第三方开源项目,在现在的IOS应用中多使用到这个开源类库来提供网络操作,相比于SDK提供的网络操作类库,ASIHTTPRequest使用上更加方便.效率更高,同时功能 ...
 - YAML书写规范
			
1. 认识 YAML YAML是一个类似 XML.JSON 的标记性语言.YAML 强调以数据为中心,并不是以标识语言为重点.因而 YAML 本身的定义比较简单,号称"一种人性化的数据格式语 ...