POJ 3801/HDU 3157 Crazy Circuits | 有下界的最小流
题目:
POJ最近总是炸
所以还是用HDU吧http://acm.hdu.edu.cn/showproblem.php?pid=3157
题解:
题很长,但其实就是给个有源汇带下界网络流(+是源,-是汇),求最小流
求法:
1.模仿可行流建图,但是不加t到s的INF边
2.跑最大流
3.加t到sINF边
4.跑最大流
5.如果两次答案相加不等于sum,无解;
6.如果有解,t到s的反边流量就是答案
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#define N 205
#define M 20005
#define INF 0x3f3f3f3f
using namespace std;
int n,m,s,t,S,T,c,cur[N],head[N],d[N],sum,ecnt=,ans,lev[N];
char a[N],b[N];
queue<int> q;
struct adj
{
int nxt,v,w;
}e[M];
int calc(char j[])
{
if (j[]=='+') return n+;
if (j[]=='-') return n+;
int ans=,s=strlen(j);
for (int i=;i<s;i++) ans*=,ans+=j[i]-'';
return ans;
}
void add(int u,int v,int w)
{
e[++ecnt].v=v;e[ecnt].w=w;e[ecnt].nxt=head[u];head[u]=ecnt;
e[++ecnt].v=u;e[ecnt].w=;e[ecnt].nxt=head[v];head[v]=ecnt;
}
void init()
{
memset(head,,sizeof(head));
memset(d,,sizeof(d));
ecnt=;ans=sum=;
}
bool bfs()
{
for (int i=;i<=T;i++)
cur[i]=head[i],lev[i]=-;
q.push(S);lev[S]=;
while (!q.empty())
{
int u=q.front();q.pop();
for (int i=head[u],v;i;i=e[i].nxt)
if (lev[v=e[i].v]==- && e[i].w>)
q.push(v),lev[v]=lev[u]+;
}
return lev[T]!=-;
}
int dfs(int u,int flow)
{
if (u==T) return flow;
int ret=,v,delta;
for (int &i=cur[u];i;i=e[i].nxt)
if (lev[v=e[i].v]==lev[u]+ && e[i].w>)
{
delta=dfs(v,min(flow-ret,e[i].w));
if (delta)
{
e[i].w-=delta;e[i^].w+=delta;ret+=delta;
if (ret==flow) break;
}
}
return ret;
}
int main()
{
while (scanf("%d%d",&n,&m)!=EOF)
{
if (n== && m==) break;
init();
s=n+;t=s+;S=t+;T=S+;
for (int i=,u,v;i<=m;i++)
{
scanf("%s%s%d",a,b,&c);
u=calc(a);v=calc(b);
add(u,v,INF-c);
d[u]-=c;d[v]+=c;
}
for (int i=;i<=n+;i++)
if (d[i]>) add(S,i,d[i]),sum+=d[i];
else if (d[i]<) add(i,T,-d[i]);
while (bfs()) ans+=dfs(S,INF);
add(t,s,INF);
while (bfs()) ans+=dfs(S,INF);
if (ans!=sum) puts("impossible");
else printf("%d\n",e[ecnt].w);
}
return ;
}
POJ 3801/HDU 3157 Crazy Circuits | 有下界的最小流的更多相关文章
- HDU 3157 Crazy Circuits(有源汇上下界最小流)
HDU 3157 Crazy Circuits 题目链接 题意:一个电路板,上面有N个接线柱(标号1~N),还有两个电源接线柱 + -.给出一些线路,每一个线路有一个下限值求一个能够让全部部件正常工作 ...
- HDU 3157 Crazy Circuits (有源汇上下界最小流)
题意:一个电路板,上面有N个接线柱(标号1~N) 还有两个电源接线柱 + - 然后是 给出M个部件正负极的接线柱和最小电流,求一个可以让所有部件正常工作的总电流. 析:这是一个有源汇有上下界的 ...
- HDU 3157 Crazy Circuits
Crazy Circuits Time Limit: 2000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ...
- hdu 3157 Crazy Circuits 网络流
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3157 You’ve just built a circuit board for your new r ...
- hdu 3157 Crazy Circuits 有源汇和下界的最小费用流
题目链接 题意:有n个节点,m个用电器.之后输入m行每行三个整数a,b,c; 节点a为正极(或者a 为 '+'即总的正极),b为该用电器的负极(b = '-'表示总的负极),c为该用电器要正常工作最小 ...
- hdoj 3157 Crazy Circuits 【有下界最小流】
题目:hdoj 3157 Crazy Circuits 题意:如今要制造一个电路板.电路板上有 n 个电子元件,各个元件之间有单向的电流流向.然后有一个 + .电流进入, -- 电流汇入,然后推断能不 ...
- 【BZOJ-2502】清理雪道 有上下界的网络流(有下界的最小流)
2502: 清理雪道 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 594 Solved: 318[Submit][Status][Discuss] ...
- [BZOJ2502]清理雪道解题报告|带下界的最小流
滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向. 你的团队负责每周定时清理雪道.你们拥有一架直升飞机,每次飞 ...
- sgu 176 有源汇有上下界的最小流模板题
/*参考博文:http://hi.baidu.com/dragon_eric123/item/82e259200ece744046996282 有上下界的有源最小流 */ #include<st ...
随机推荐
- Symfony FOSUserBundle用户登录验证
symfony是一个由组件构成的框架,登录验证的也是由一些组件构成,下面就介绍一下FOSUserBundle的使用. 以symfony 3.3为例, 首先我们需要先安装一下FOSUserBundle. ...
- hive自定义函数(UDF)
首先什么是UDF,UDF的全称为user-defined function,用户定义函数,为什么有它的存在呢?有的时候 你要写的查询无法轻松地使用Hive提供的内置函数来表示,通过写UDF,Hive就 ...
- Vue 服务器端渲染(一)
什么是服务器端渲染(SSR)? Vue.js 是构建客户端应用程序的框架.默认情况下,可以在浏览器中输出 Vue 组件,进行生成 DOM 和操作 DOM.然而,也可以将同一个组件渲染为服务器端的 HT ...
- docker和docker compose常用操作命令
首先区分一下docker中几个概念 Image:镜像,相当于一个root文件系统,不包含任何动态数据 Container:容器,镜像运行时的实体,实质是进程,容器进程运行于属于自己的独立的命名空间 d ...
- latex01-LaTeX环境的安装与配置
以Tex Live (跨平台的发行版软件)为例. 1.官网下载iso镜像文件 2.用advanced.bat 安装(管理员权限) 选择要安装的包(主要是去掉多余的语言包) 测试Tex Live 是否正 ...
- 【转】Linux系统安装Redis详细过程
本文来源 https://blog.csdn.net/qq_20989105/article/details/76390367 ,转载前请先联系原作者并声明出处. 一.安装gcc 1.Redis在li ...
- DDR分析与布线要求
基本知识 Double Data Rate Synchronous Dynamic Random Access Memory 简称 DDR SDRAM 双倍数据率同步动态随机存取内存 DDR SDRA ...
- js 邮箱和手机号码验证
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 4368: [IOI2015]boxes纪念品盒
4368: [IOI2015]boxes纪念品盒 链接 分析 链接 代码 #include<bits/stdc++.h> using namespace std; typedef long ...
- ArrayMap java.lang.ArrayIndexOutOfBoundsException
错误堆栈: java.lang.ArrayIndexOutOfBoundsException: length=0; index=1 at android.support.v4.util.SimpleA ...