LOJ#6002. 「网络流 24 题」最小路径覆盖
模板。
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 //#include<time.h> 5 //#include<complex> 6 //#include<set> 7 //#include<queue> 8 #include<algorithm> 9 #include<stdlib.h> 10 using namespace std; 11 12 #define LL long long 13 int qread() 14 { 15 char c; int s=0,f=1; while ((c=getchar())<'0' || c>'9') (c=='-') && (f=-1); 16 do s=s*10+c-'0'; while ((c=getchar())>='0' && c<='9'); return s*f; 17 } 18 19 //Pay attention to '-' , LL and double of qread!!!! 20 21 int n,m; 22 #define maxn 511 23 #define maxm 15011 24 struct Edge{int to,next,flow,cap;}; 25 struct Network 26 { 27 Edge edge[maxm]; int first[maxn],le,n; 28 void clear(int N) {le=2; memset(first,0,sizeof(first)); n=N;} 29 void in(int x,int y,int cap) {Edge &e=edge[le]; e.to=y; e.cap=cap; e.flow=0; e.next=first[x]; first[x]=le++;} 30 void insert(int x,int y,int cap) {in(x,y,cap); in(y,x,0);} 31 int dis[maxn]; int que[maxn],cur[maxn],head,tail,s,t; 32 bool bfs() 33 { 34 memset(dis,0,sizeof(dis)); dis[s]=1; 35 head=tail=0; que[tail++]=s; 36 while (head!=tail) 37 { 38 int x=que[head++]; 39 for (int i=first[x];i;i=edge[i].next) 40 { 41 Edge &e=edge[i]; 42 if (!dis[e.to] && e.cap>e.flow) 43 { 44 dis[e.to]=dis[x]+1; 45 que[tail++]=e.to; 46 } 47 } 48 } 49 return dis[t]; 50 } 51 int dfs(int x,int a) 52 { 53 if (x==t || !a) return a; 54 int flow=0,f; 55 for (int &i=cur[x];i;i=edge[i].next) 56 { 57 Edge &e=edge[i]; 58 if (dis[e.to]==dis[x]+1 && (f=dfs(e.to,min(e.cap-e.flow,a)))>0) 59 { 60 flow+=f; e.flow+=f; 61 edge[i^1].flow-=f; a-=f; 62 if (!a) break; 63 } 64 } 65 return flow; 66 } 67 int Dinic(int S,int T) 68 { 69 s=S; t=T; 70 int ans=0; 71 while (bfs()) 72 { 73 for (int i=1;i<=n;i++) cur[i]=first[i]; 74 ans+=dfs(s,0x3f3f3f3f); 75 } 76 return ans; 77 } 78 }g; 79 80 bool vis[maxn]; 81 int main() 82 { 83 n=qread(); m=qread(); 84 int s=2*n+1,t=s+1; g.clear(t); 85 for (int i=1,x,y;i<=m;i++) 86 { 87 x=qread(); y=qread(); 88 g.insert(x,y+n,1); 89 } 90 for (int i=1;i<=n;i++) g.insert(s,i,1),g.insert(i+n,t,1); 91 int ans=n-g.Dinic(s,t); 92 for (int i=1;i<=n;i++) if (!vis[i]) 93 { 94 printf("%d",i); 95 bool flag=1; int x=i; 96 while (flag) 97 { 98 vis[x]=1; 99 flag=0; 100 for (int j=g.first[x];j;j=g.edge[j].next) 101 { 102 Edge &e=g.edge[j]; if (e.to==s) continue; 103 if (e.cap==e.flow) {flag=1; printf(" %d",x=e.to-n); break;} 104 } 105 } 106 puts(""); 107 } 108 printf("%d\n",ans); 109 return 0; 110 }
View Code
转载于:https://www.cnblogs.com/Blue233333/p/8945283.html
LOJ#6002. 「网络流 24 题」最小路径覆盖相关推荐
- LibreOJ #6002. 「网络流 24 题」最小路径覆盖
内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:Special Judge 上传者: 匿名 网络流 最大流 屠龙宝刀点击就送 #include <cs ...
- 流网络的最小割问题c语言,「网络流24题」最小路径覆盖问题
Description 问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任 ...
- loj #6226. 「网络流 24 题」骑士共存问题
#6226. 「网络流 24 题」骑士共存问题 题目描述 在一个 n×n\text{n} \times \text{n}n×n 个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上某些 ...
- loj #6004. 「网络流 24 题」圆桌聚餐(最大流)
#6004. 「网络流 24 题」圆桌聚餐 内存限制:256 MiB时间限制:5000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测试数 ...
- 【网络流24题】最小路径覆盖问题
[题目]1738: 最小路径覆盖问题 [题解]网络流 关于输出路径,因为即使有反向弧经过左侧点也一定会改变左侧点的去向,若没连向右侧就会被更新到0,所以不用在意. mark记录有入度的右侧点,然后从没 ...
- 【刷题】LOJ 6011 「网络流 24 题」运输问题
题目描述 W 公司有 \(m\) 个仓库和 \(n\) 个零售商店.第 \(i\) 个仓库有 \(a_i\) 个单位的货物:第 \(j\) 个零售商店需要 \(b_j\) 个单位的货物.货物供需平衡, ...
- 【刷题】LOJ 6014 「网络流 24 题」最长 k 可重区间集
题目描述 给定实直线 \(L\) 上 \(n\) 个开区间组成的集合 \(I\) ,和一个正整数 \(k\) ,试设计一个算法,从开区间集合 \(I\) 中选取出开区间集合 \(S \subseteq ...
- 【刷题】LOJ 6005 「网络流 24 题」最长递增子序列
题目描述 给定正整数序列 \(x_1 \sim x_n\) ,以下递增子序列均为非严格递增. 计算其最长递增子序列的长度 \(s\) . 计算从给定的序列中最多可取出多少个长度为 \(s\) 的递增子 ...
- LibreOJ #6001. 「网络流 24 题」太空飞行计划 最大权闭合图
#6001. 「网络流 24 题」太空飞行计划 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:Special Judge 上传者: 匿名 提交提交记录统计讨论测 ...
最新文章
- 为了自动驾驶,谷歌用NeRF在虚拟世界中重建了旧金山市
- Maven -- 使用Myeclipse创建Maven项目
- 轻量级HTTP服务器Nginx(配置与调试Nginx)(转)
- 浅析影响网站建设的因素有哪些?
- android InputStream中read()与read(byte[] b)
- 前端学习(3132):react-hello-react之react中事件处理
- mongodb 统计内嵌文档中某一属性的方法
- 最好用的mysql密码忘记的解决方法
- java中KMP模式,Java数据结构-串及其应用-KMP模式匹配算法
- nginx——ngx_http_gzip_module
- JAVA版村庄哨塔种子_我的世界:TOP18种子,刷怪笼、哨塔和村庄挤在一起,还不来试试?...
- 维修技术论坛专用工具包 v5.0
- 中国互联网的5大生死逻辑
- 行业领军的高压线性恒流驱动IC,真正长寿的半导体线性IC
- 电脑上计算机软件一直自动弹出,拨号连接自动弹出,详细教您如何解决电脑总是自动弹出...
- 日期格式 Wed Oct 16 00:00:00 CEST 2020 转换
- 在Letax中使用enumerate编辑 Step1 , Step2, ..... ,并设置缩进
- Python爬虫-QQ音乐下载(详解)
- Excel表格中实现IP地址排序
- 京东面试官:从求职者到面试官的心路历程