题目链接:2095:[Poi2010]Bridges

二分答案建图后显然是混合图的欧拉回路,有向边删掉无向边随机定向计算入度-出度的差du[i],如果du[i]<0连边(i,T,-du[i]/2),否则连边(S,i,du[i]/2)并计算du[i]/2的和num,跑一边最大流答案如果等于num则此时存在回路

#include<queue>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=100010;
const int inf=0x7fffffff/3;
int n,m,tot,h[maxn],vis[maxn],S,T;
struct edge{int to,next,w;}G[maxn*2];
struct edges{int a,b,c,d;}e[maxn*2];
int cur[maxn],du[maxn],mx=0;
int num=0,mn=inf;void add(int x,int y,int z){G[++tot].to=y;G[tot].next=h[x];h[x]=tot;G[tot].w=z;G[++tot].to=x;G[tot].next=h[y];h[y]=tot;G[tot].w=0;
}bool bfs(){for (int i=S;i<=T;++i) vis[i]=-1;queue<int>q; q.push(S); vis[S]=0;while (!q.empty()){int u=q.front(); q.pop();for (int i=h[u];i;i=G[i].next){int v=G[i].to;if (vis[v]==-1&&G[i].w){vis[v]=vis[u]+1;q.push(v);}}}return vis[T]!=-1;
}int dfs(int x,int f){if (x==T||f==0) return f;int w,used=0;for (int i=cur[x];i;i=G[i].next)if (G[i].w&&vis[G[i].to]==vis[x]+1){w=f-used;w=dfs(G[i].to,min(w,G[i].w));G[i].w-=w; G[i^1].w+=w;if (G[i].w) cur[x]=i;used+=w; if (used==f) return f;}if (!used) vis[x]=-1;return used;
}void rebuild(int x){memset(h,0,sizeof(h)); tot=1;memset(du,0,sizeof(du)); num=0;for (int i=1;i<=m;++i){if (e[i].c<=x) du[e[i].a]--,du[e[i].b]++;if (e[i].d<=x) add(e[i].b,e[i].a,1);}for (int i=1;i<=n;++i)if (du[i]>0) num+=du[i]/2,add(S,i,du[i]/2);else if (du[i]<0) add(i,T,-du[i]/2);
}bool check(int x){rebuild(x); int ret=0;for (int i=1;i<=n;++i) if (du[i]&1) return 0;while (bfs()){for (int i=S;i<=T;++i) cur[i]=h[i];ret+=dfs(S,inf);}if (ret==num) return 1;else return 0;
}int main(){scanf("%d%d",&n,&m);S=0; T=n+1;for (int i=1;i<=m;++i){scanf("%d%d%d%d",&e[i].a,&e[i].b,&e[i].c,&e[i].d);if (e[i].c>e[i].d)swap(e[i].a,e[i].b),swap(e[i].c,e[i].d);mx=max(mx,e[i].d); mn=min(mn,e[i].c);}int l=mn,r=mx,ans=-1;while (l<=r){int mid=(l+r)>>1;if (check(mid)) r=mid-1;else l=mid+1;}if (l<mx+1) printf("%d",l);else printf("NIE");
}

Bzoj2095:[Poi2010]Bridges:混合图欧拉回路,网络流相关推荐

  1. BZOJ 2095: [Poi2010]Bridges 混合图欧拉回路

    YYD为了减肥,他来到了瘦海,这是一个巨大的海,海中有n个小岛,小岛之间有m座桥连接,两个小岛之间不会有两座桥,并且从一个小岛可以到另外任意一个小岛.现在YYD想骑单车从小岛1出发,骑过每一座桥,到达 ...

  2. BZOJ2095 POI2010 Bridges 【二分+混合图欧拉回路】

    BZOJ2095 POI2010 Bridges Description YYD为了减肥,他来到了瘦海,这是一个巨大的海,海中有n个小岛,小岛之间有m座桥连接,两个小岛之间不会有两座桥,并且从一个小岛 ...

  3. 2095: [Poi2010]Bridges 二分+混合图欧拉回路(网络流)

    好厉害的题啊QAQ,并不会做. 最大值最小想到是二分,然后就是一个混合图欧拉回路的问题. 混合图欧拉回路问题的解决: 我们首先想到有向图的欧拉回路,需满足的条件是每个点的入度等于出度.那么对于一个混合 ...

  4. BZOJ2095[Poi2010] Bridges

    BZOJ2095[Poi2010] Bridges Description YYD为了减肥,他来到了瘦海,这是一个巨大的海,海中有n个小岛,小岛之间有m座桥连接,两个小岛之间不会有两座桥,并且从一个小 ...

  5. [BZOJ2095][Poi2010]Bridges 最大流(混合图欧拉回路)

    2095: [Poi2010]Bridges Time Limit: 10 Sec  Memory Limit: 259 MB Description YYD为了减肥,他来到了瘦海,这是一个巨大的海, ...

  6. BZOJ 2095 [Poi2010]Bridges 二分 最大流(混合图欧拉回路)

    题目大意:给出一张n个点m条边的联通图,无重边,每条边有正反两个权值.现要从点1出发经过每条边每个点一次,问最大边权最小是多少. 最大最小容易想到二分,问题是如何判断是否有欧拉回路. 图不连通自然没有 ...

  7. 图论欧拉回路初步 BZOJ2095 POI2010 Bridges

    反正对于现在的我来说是好题.顺便膜po大犇和dingchao大犇. 网络流什么的还是再开一个专题好了. 欧拉回路问题参考论文<欧拉回路性质与应用探究>by 仇荣琦. POI2010 题解整 ...

  8. TZOJ 2099 Sightseeing tour(网络流判混合图欧拉回路)

    描述 The city executive board in Lund wants to construct a sightseeing tour by bus in Lund, so that to ...

  9. bzoj2095 [Poi2010]Bridges

    bzoj [Poi2010]Bridges Description YYD为了减肥,他来到了瘦海,这是一个巨大的海,海中有n个小岛,小岛之间有m座桥连接,两个小岛之间不会有两座桥,并且从一个小岛可以到 ...

最新文章

  1. java double转换符_java中字符串怎么转换成double类型
  2. python自动化测试视频百度云-Python接口自动化测试 PDF 超清版
  3. ad域 禁用账号_通过AD域控平台统一批量管理公司电脑的桌面
  4. ffmpeg实战教程(二)用SDL播放YUV,并结合ffmpeg实现简易播放器
  5. linux之cp强制复制文件
  6. Ubuntu进入pycharm创建的虚拟环境的方法(以及如果你安装了anaconda等其它修改了环境变量的东西该怎么进)
  7. matlab 矩阵数据类型,Matlab数据类型
  8. 优动漫PAINT拾色器功能介绍
  9. 计算ERA-5数据的相对湿度(RH)与饱和水汽压差(VPD)
  10. 题解 【中学高级本-网络流24题】餐巾计划
  11. 兄弟连Linux笔记
  12. Memcached damo
  13. gitter 卸载_最佳Gitter频道:数学
  14. 《带你学C带你飞》—— SE54位操作
  15. 【HDOJ】4210 Su-domino-ku
  16. IV-工具变量法:第一阶段系数符号确定时的小样本无偏估计
  17. mysql最近24小时数据_mysql中如何查询最近24小时、top n查询
  18. React 中同构(SSR)原理脉络梳理
  19. 网页中商业产品展示页制作方法探讨
  20. 2019年猪年海报PSD模板-第二部分

热门文章

  1. Python-bs4库,find_all 函数处理css样式问题
  2. 【办公软件】如何设置任务栏图标的显示与隐藏
  3. 管理模式和商业模式的区别
  4. (web)个人项目(挖宝网)
  5. 小程序突然报module is not defined_【第一季完】(字幕+讲解)小谢尔顿S1E22 Meemaw#39;s two boyfriends...
  6. 京东生鲜全品类爬虫--往期创作整理
  7. c#中正则表达式屏蔽一些特殊字符
  8. 【综合应用】基础PLS-SEM模型STATA实战
  9. Android拍摄照片、视频添加水印功能
  10. Altium高版本(19以上)Comment批量修改成Value或者MPN的方法