当前位置: 首页 > news >正文

广州网站建设建航科技公司/seo标题优化的方法

广州网站建设建航科技公司,seo标题优化的方法,手机怎么做网站教程,阜沙网站建设https://www.luogu.org/problemnew/show/P1231 听说这题也可以用匹配来做? 网络流入门题。一份书册由一本书、一本练习册和一本答案组成,给出书与练习册以及书与答案的对应关系,求最多能组成多少份书册。 将书、题、答案的n1,n2,n3三组节点…

https://www.luogu.org/problemnew/show/P1231
听说这题也可以用匹配来做?
网络流入门题。一份书册由一本书、一本练习册和一本答案组成,给出书与练习册以及书与答案的对应关系,求最多能组成多少份书册。
将书、题、答案的n1,n2,n3三组节点间建图,n2连源点,n3连汇点,容量设为1,跑一遍最大流。
注意如果不将书拆点,则一本书可以重复使用;将n1本书拆成两个连一条边,就能保证书中流过的流量也是1了。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MX = 10001;
const int MXN = 1000001;
const int INF = 0x3f3f3f3f;
struct data{int u,v,nxt,flow;
}g[MXN];
int n1,n2,n3,m1,m2,u,v,ans;
int head[MXN],tot,s,t,level[6*MX],Q[MXN];
void addEdge(int u,int v,int val) {g[tot]=data{u,v,head[u],val};head[u]=tot++;g[tot]=data{v,u,head[v],0};head[v]=tot++;
}
bool bfs(int s,int t) {memset(level,0,sizeof(level));int l=-1,r=0;Q[r]=s;level[s]=1;while (l<r) {int u=Q[++l];if (u==t) return true;for (int i=head[u];i!=-1;i=g[i].nxt) {int v=g[i].v,flow=g[i].flow;if (level[v]==0&&flow!=0) {Q[++r]=v;level[v]=level[u]+1;}}}return false;
}
int dfs(int u,int maxFlow,int t) {if (u==t) return maxFlow;int res=0;for (int i=head[u];i!=-1&&res<maxFlow;i=g[i].nxt) {int v=g[i].v,flow=min(g[i].flow,maxFlow-res);if (level[v]==level[u]+1&&flow!=0) {flow=dfs(v,flow,t);g[i].flow-=flow;g[i^1].flow+=flow;res+=flow;}}if (res==0) level[u]=MXN;return res;
}
int main() {scanf("%d%d%d",&n1,&n2,&n3);memset(head,-1,sizeof(head));scanf("%d",&m1);while (m1--) {scanf("%d%d",&u,&v);addEdge(v,u+n2,1);}scanf("%d",&m2);while (m2--) {scanf("%d%d",&u,&v);addEdge(n2+n1+u,n2+n1+n1+v,1);}s=0,t=n1+n1+n2+n3+1;for (int i=1;i<=n1;++i)addEdge(i+n2,i+n2+n1,1);for (int i=1;i<=n2;++i)addEdge(s,i,1);for (int i=1;i<=n3;++i)addEdge(i+n2+n1+n1,t,1);while (bfs(s,t)) ans+=dfs(s,INF,t);printf("%d\n",ans);return 0;
}
//Version2
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MX = 10001;
const int MXN = 1000001;
const int INF = 0x3f3f3f3f;
struct data{int u,v,nxt,flow;
}g[MXN];
int n1,n2,n3,m1,m2,u,v,ans;
int head[MXN],tot,s,t,level[6*MX],Q[MXN];
void addEdge(int u,int v,int val) {g[tot]=data{u,v,head[u],val};head[u]=tot++;g[tot]=data{v,u,head[v],0};head[v]=tot++;
}
bool bfs(int s,int t) {memset(level,0,sizeof(level));int l=-1,r=0;Q[r]=s;level[s]=1;while (l<r) {int u=Q[++l];if (u==t) return true;for (int i=head[u];i!=-1;i=g[i].nxt) {int v=g[i].v,flow=g[i].flow;if (level[v]==0&&flow!=0) {Q[++r]=v;level[v]=level[u]+1;}}}return false;
}
int dfs(int u,int maxFlow,int t) {if (u==t) return maxFlow;int res=0;for (int i=head[u];i!=-1&&res<maxFlow;i=g[i].nxt) {int v=g[i].v,flow=min(g[i].flow,maxFlow-res);if (level[v]==level[u]+1&&flow!=0) {flow=dfs(v,flow,t);g[i].flow-=flow;g[i^1].flow+=flow;res+=flow;}}if (res==0) level[u]=MXN;return res;
}
void dinic() {    while(bfs(s,t)) ans+=dfs(s,INF,t);    printf("%d\n",ans);
}
int main() {scanf("%d%d%d",&n1,&n2,&n3);memset(head,-1,sizeof(head));scanf("%d",&m1);while (m1--) {scanf("%d%d",&u,&v);addEdge(v,u+n1,1);}scanf("%d",&m2);while (m2--) {scanf("%d%d",&u,&v);addEdge(n2+n1+u,n2+n1+n1+v,1);}s=0,t=n1+n1+n2+n3+1;for (int i=1;i<=n1;++i)addEdge(i+n2,i+n2+n1,1);for (int i=1;i<=n2;++i)addEdge(s,i,1);for (int i=1;i<=n3;++i)addEdge(i+n2+n1+n1,t,1);    dinic();return 0;
}
http://www.jmfq.cn/news/4776805.html

相关文章:

  • 政府网站集约化建设工作/郑州网络推广方案
  • 做营销网站制作/百度seo搜索引擎优化培训
  • 建设网站需要什么知识/今日新闻简报
  • 做小程序还是做网站/seo系统培训
  • 网站模板提供源码/正版google下载
  • 专业网站运营托管/网站关键字优化技巧
  • 天津网站建设noakj/seo优化是怎么回事呢
  • 网站策划方案1500字/百度账号管理中心
  • 做电影网站怎么样/优化大师手机版
  • 西安企业网站建站/推广软件赚钱违法吗
  • 中移建设有限公司网站/企业营销策划论文
  • 做一个商城网站/进入百度搜索首页
  • 网站开发工具是啥/正规seo关键词排名哪家专业
  • asp 网站后台/全网整合营销推广
  • 与网络公司洽谈做网站需要注意什么/百度怎样发布作品
  • 网站建设时怎么附加数据库/腾讯云域名注册官网
  • wordpress子文件夹建站/指数基金
  • 网站建设 教程/社交网络推广方法
  • 在线html网页制作工具/seoul是什么意思中文
  • 做饮食网站怎么样/深圳优化网站方法
  • 音乐网站怎么做/黄山seo推广
  • 算命网站该怎样做/优化大师班级
  • 网站空间怎么进/抓取关键词的软件
  • 阿里云模板建站教程/百度产品大全首页
  • 视频网站建设方案/全国各城市疫情搜索高峰进度
  • 怎么弄一个公司网站/南京网站seo
  • wordpress建哪些网站吗/免费做推广的网站
  • 如何做网站app/合肥网络seo
  • 重庆市建设岗培中心网站/网络营销师资格证报名
  • 如何学习网站建设app/做个网页需要多少钱?