hdu3157有源汇上下界最小流
题意:有源汇上下界最小流裸题,主要就是输入要用字符串的问题
- #include<bits/stdc++.h>
- #define fi first
- #define se second
- #define mp make_pair
- #define pb push_back
- #define pii pair<int,int>
- #define C 0.5772156649
- #define pi acos(-1.0)
- #define ll long long
- #define mod 1000000007
- #define ls l,m,rt<<1
- #define rs m+1,r,rt<<1|1
- using namespace std;
- const double g=10.0,eps=1e-;
- const int N=+,maxn=+,inf=0x3f3f3f3f;
- struct edge{
- int from,to,c,Next,low;
- }e[maxn<<];
- int cnt,head[N];
- int dis[N];
- int in[N],out[N];
- void add(int u,int v,int c,int low)
- {
- out[u]+=low;
- in[v]+=low;
- e[cnt].from=u;
- e[cnt].to=v;
- e[cnt].c=c;
- e[cnt].low=low;
- e[cnt].Next=head[u];
- head[u]=cnt++;
- e[cnt].from=v;
- e[cnt].to=u;
- e[cnt].c=;
- e[cnt].low=low;
- e[cnt].Next=head[v];
- head[v]=cnt++;
- }
- bool bfs(int s,int t)
- {
- memset(dis,-,sizeof dis);
- dis[s]=;
- queue<int>q;
- q.push(s);
- while(!q.empty())
- {
- int x=q.front();
- q.pop();
- if(x==t)return ;
- for(int i=head[x];~i;i=e[i].Next)
- {
- int te=e[i].to;
- if(dis[te]==-&&e[i].c>)
- {
- dis[te]=dis[x]+;
- q.push(te);
- }
- }
- }
- return ;
- }
- int dfs(int x,int mx,int t)
- {
- if(x==t)return mx;
- int flow=;
- for(int i=head[x];~i;i=e[i].Next)
- {
- int te=e[i].to,f;
- if(dis[te]==dis[x]+&&e[i].c>&&(f=dfs(te,min(mx-flow,e[i].c),t)))
- {
- e[i].c-=f;
- e[i^].c+=f;
- flow+=f;
- }
- }
- if(!flow)dis[x]=-;
- return flow;
- }
- int maxflow(int s,int t)
- {
- int ans=,f;
- while(bfs(s,t))
- {
- while((f=dfs(s,inf,t)))ans+=f;
- }
- return ans;
- }
- void init()
- {
- cnt=;
- memset(head,-,sizeof head);
- memset(in,,sizeof in);
- memset(out,,sizeof out);
- }
- int change(string a,int s,int t)
- {
- if(a=="+")return s;
- else if(a=="-")return t;
- else
- {
- int ans=;
- for(int i=;i<a.size();i++)
- ans=ans*+a[i]-'';
- return ans;
- }
- }
- int main()
- {
- ios::sync_with_stdio(false);
- cin.tie();
- int n,m;
- while(cin>>n>>m)
- {
- if(!n&&!m)break;
- init();
- int s=n+m+,t=n+m+;
- for(int i=;i<m;i++)
- {
- string a,b;
- int c;
- cin>>a>>b>>c;
- add(change(a,s,t),change(b,s,t),inf-c,c);
- }
- int ss=n+m+,tt=n+m+,sum=;
- for(int i=;i<=n+m+;i++)
- {
- if(in[i]>out[i])add(ss,i,in[i]-out[i],),sum+=in[i]-out[i];
- else add(i,tt,out[i]-in[i],);
- }
- int flow=maxflow(ss,tt);
- add(t,s,inf,);
- flow+=maxflow(ss,tt);
- if(flow!=sum)cout<<"impossible"<<endl;
- else cout<<e[cnt-].c<<endl;
- }
- return ;
- }
- /********************
- ********************/
hdu3157有源汇上下界最小流的更多相关文章
- BZOJ_2502_清理雪道_有源汇上下界最小流
BZOJ_2502_清理雪道_有源汇上下界最小流 Description 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道), ...
- 【Loj117】有源汇上下界最小流(网络流)
[Loj117]有源汇上下界最小流(网络流) 题面 Loj 题解 还是模板题. #include<iostream> #include<cstdio> #include< ...
- BZOJ 2502 清理雪道(有源汇上下界最小流)
题面 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向. 你的团队负责每周定时清理雪道.你们拥有一架直升飞机, ...
- BZOJ 2502 清理雪道/ Luogu P4843 清理雪道 (有源汇上下界最小流)
题意 有一个有向无环图,求最少的路径条数覆盖所有的边 分析 有源汇上下界最小流板题,直接放代码了,不会的看dalao博客:liu_runda 有点长,讲的很好,静心看一定能看懂 CODE #inclu ...
- sgu176 有源汇上下界最小流
题意:有一堆点和边,1起点,n终点,某些边有可能必须满流,要求满足条件的最小流 解法:按原图建边,满流的即上下界都是容量,但是这样按有源汇上下界可行流求出来的可能不是最小流,那么我们需要开始建边的时候 ...
- HDU 3157 Crazy Circuits (有源汇上下界最小流)
题意:一个电路板,上面有N个接线柱(标号1~N) 还有两个电源接线柱 + - 然后是 给出M个部件正负极的接线柱和最小电流,求一个可以让所有部件正常工作的总电流. 析:这是一个有源汇有上下界的 ...
- SGU 176 Flow construction(有源汇上下界最小流)
Description 176. Flow construction time limit per test: 1 sec. memory limit per test: 4096 KB input: ...
- HDU 3157 Crazy Circuits(有源汇上下界最小流)
HDU 3157 Crazy Circuits 题目链接 题意:一个电路板,上面有N个接线柱(标号1~N),还有两个电源接线柱 + -.给出一些线路,每一个线路有一个下限值求一个能够让全部部件正常工作 ...
- bzoj 2502 清理雪道 (有源汇上下界最小流)
2502: 清理雪道 Time Limit: 10 Sec Memory Limit: 128 MB Description 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场 ...
随机推荐
- Linux中的服务管理
RPM包默认安装的服务 查看已安装的服务: chkconfig --list 默认安装位置: /etc/init.d 启动脚本 /etc/sysconfig 初始化环境配置文件 /etc 配置文件位 ...
- springboot整合 Thymeleaf模板
首先引入maven jar依赖 <dependency> <groupId>org.springframework.boot</groupId> <artif ...
- BAPI: TRANSACTION_BEGIN的作用
大概知道是启动一个新会话, CALL FUNCTION 'TRANSACTION_BEGIN' 业务数据处理, CALL FUNCTION 'TRANSACTION_END' 详细功能不清楚. CLE ...
- 试着利用BAPI 寻找F-59创建凭证的函数
功能块代码 F-59开发类 FIBP事务说明 支付请求 事物:FBP1Screen 0BKPF-BLART = AB________________________________________从程 ...
- Vuex核心知识(转)
转:http://www.cnblogs.com/ghost-xyx/p/6380689.html Vuex 是一个专门为 Vue.js 应该程序开发的状态管理模式,它类似于 Redux 应用于 Re ...
- 3.7 基于51单片机+MC20的路径显示【使用STC15W内核】
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- 剑指offer 面试4题
面试4题: 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 解题代码一:二 ...
- pyhton3 logging模块
1.简单的将日志打印到屏幕 import logging logging.debug('This is debug message')logging.info('This is info mess ...
- pyhton3 sys模块
Python常用模块之sys sys模块提供了一系列有关Python运行环境的变量和函数. 1 ). sys.stdin 标准输入流.2 ).sys.stdout 标准输出流.3 ). sys.std ...
- linux 快速清空文件内容
Tomcat 的catelina.out 如果不配置按照日期产生会在一个文件中产生大量的输出日志. 清除日志如果直接删除catelina.out将无法输出日志.如果想输出日志只能重启Tomcat才会产 ...