link

题意&题解

code:

 #include<bits/stdc++.h>
#define rep(i,x,y) for (int i=(x);i<=(y);i++)
#define ll long long
#define inf 1000000001
#define y1 y1___
using namespace std;
char gc(){
static char buf[],*p1=buf,*p2=buf;
return p1==p2&&(p2=(p1=buf)+fread(buf,,,stdin),p1==p2)?EOF:*p1++;
}
#define gc getchar
ll read(){
char ch=gc();ll x=;int op=;
for (;!isdigit(ch);ch=gc()) if (ch=='-') op=-;
for (;isdigit(ch);ch=gc()) x=(x<<)+(x<<)+ch-'';
return x*op;
}
#define N 60005
#define M 130005+N<<1
int n,m,cnt=,s_,t_,s,t,head[N],d[N],vis[N],cur[N];
struct edge{int to,nxt,c;}e[M];
void adde(int x,int y,int c){
e[++cnt].to=y;e[cnt].nxt=head[x];head[x]=cnt;
e[cnt].c=c;
}
void ins(int x,int y,int z){
adde(x,y,z);adde(y,x,);
}
bool bfs(){
queue<int> q;q.push(s);
rep (i,,t) vis[i]=-;vis[s]=;
while (!q.empty()){
int u=q.front();q.pop();
for (int i=head[u];i;i=e[i].nxt){
int v=e[i].to;
if (e[i].c&&vis[v]==-) vis[v]=vis[u]+,q.push(v);
}
}
return vis[t]!=-;
}
int dfs(int u,int flow){
if (u==t) return flow;
int w,used=;
for (int &i=cur[u];i;i=e[i].nxt){
int v=e[i].to;
if (e[i].c&&vis[v]==vis[u]+){
w=dfs(v,min(flow-used,e[i].c));
e[i].c-=w,e[i^].c+=w,used+=w;
if (used==flow) return used;
}
}
if (!used) vis[u]=-;
return used;
}
int dinic(){
int ret=;
while (bfs()){
memcpy(cur,head,sizeof(cur));//当前弧优化
ret+=dfs(s,inf);
}
return ret;
}
int main(){
n=read(),m=read(),s_=read(),t_=read();
rep (i,,m){
int x=read(),y=read(),a=read(),b=read();
ins(x,y,b-a);d[x]-=a,d[y]+=a;
}
s=n+,t=n+;
rep (i,,n) if (d[i]>) ins(s,i,d[i]);else ins(i,t,-d[i]);
dinic();//不加边直接跑,尽可能跑完
ins(t_,s_,inf);
dinic();//加边以后再跑
for (int i=head[s];i;i=e[i].nxt) if (vis[e[i].to]!=-) return puts("please go home to sleep"),;//判无解
printf("%d\n",e[cnt].c);
return ;
}

最新文章

  1. eclipse自动补全的设置(自动提示)
  2. iOS、Xcode监测键盘的显示和隐藏变化,并获得键盘高度,改变tableView的frame和偏移
  3. tomcat服务器奇异事件
  4. 让Team Foundation Server/TFS自动记住用户名密码解决方案
  5. Linux Kernel Version Numbering
  6. Linux中编译、安装nginx
  7. 山峰(codevs 1531)
  8. iOS - Swift Set 集合
  9. SQL 教程学习进度备忘
  10. springAOP配置文件
  11. Windows Phone 8.1 列表控件(2):分组数据
  12. Xamarin Studio Android 配置
  13. null id in entry (don&#39;t flush the Session after an exception occurs) 解决方法
  14. 12月4日学习爬虫007.使用Urllib模块进行简单网页爬取
  15. Centos7修改默认网卡名(改为eth0)以及网卡启动报错RTNETLINK answers: File exists处理
  16. C++ lamba使用
  17. kolla-ansible部署多节点OpenStack-Pike
  18. 一个查看Access数据库密码的工具
  19. Python 协程检测Kubernetes服务端口
  20. python读取配置文件的方式

热门文章

  1. 【leetcode 简单】 第五十一题 有效电话号码
  2. mac终端配色
  3. 好久没写了,SQLSERVER服务丢失后怎么办
  4. 64_t1
  5. python操作adb代码
  6. 【并行计算】用MPI进行分布式内存编程(二)
  7. 2017 CERC
  8. js事件、事件委托
  9. python不可以打印.doc文件
  10. 终止函数 atexit()