/*参考博文:http://hi.baidu.com/dragon_eric123/item/82e259200ece744046996282
有上下界的有源最小流
*/
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
#define N 300
#define inf 0x3fffffff
struct node {
int u,v,w,f,next;
}bian[N*N*2];
int head[N],yong,dis[N],work[N];
void init(){
yong=0;
memset(head,-1,sizeof(head));
}
void addbian(int u,int v,int w,int f) {
bian[yong].u=u;
bian[yong].v=v;
bian[yong].w=w;
bian[yong].f=f;
bian[yong].next=head[u];
head[u]=yong++;
}
void add(int u,int v,int w,int f) {
addbian(u,v,w,f);
addbian(v,u,0,f);
}
int min(int a,int b)
{
return a<b?a:b;
}
int bfs(int s,int t)
{
memset(dis,-1,sizeof(dis));
queue<int>q;
q.push(s);
dis[s]=0;
while(!q.empty())
{
int u=q.front();
q.pop();
for(int i=head[u];i!=-1;i=bian[i].next)
{
int v=bian[i].v;
if(bian[i].w&&dis[v]==-1)
{
dis[v]=dis[u]+1;
q.push(v);
if(v==t)
return 1;
}
}
}
return 0;
}
int dfs(int s,int limit,int t)
{
if(s==t)return limit;
for(int &i=work[s];i!=-1;i=bian[i].next)
{
int v=bian[i].v;
if(bian[i].w&&dis[v]==dis[s]+1)
{
int tt=dfs(v,min(limit,bian[i].w),t);
if(tt)
{
bian[i].w-=tt;
bian[i^1].w+=tt;
return tt;
}
}
}
return 0;
}
int dinic(int s,int t)
{
int ans=0;
while(bfs(s,t))
{
memcpy(work,head,sizeof(head));
while(int tt=dfs(s,inf,t))
ans+=tt;
}
return ans;
} int main() {
int n,m,i,a,b,c,d,w[N],sum,f,ff,index,s,t;
while(scanf("%d%d",&n,&m)!=EOF) {
init();
s=0;t=n+1;sum=0;
memset(w,0,sizeof(w));
for(i=0;i<m;i++) {
scanf("%d%d%d%d",&a,&b,&c,&d);
if(d){
add(a,b,0,c);
w[a]-=c;
w[b]+=c;
}
else
add(a,b,c,c);
} for(i=1;i<=n;i++) {
if(w[i]>0) {
sum+=w[i];
add(s,i,w[i],0);
}
else add(i,t,-w[i],0);
}
f=dinic(s,t);
index=yong;
add(n,1,inf,0);
ff=dinic(s,t);
if(f+ff!=sum)
printf("Impossible\n");
else {
printf("%d\n",bian[index^1].w);
for(i=0;i<m-1;i++)
printf("%d ",bian[i*2].f-bian[i*2].w);
printf("%d\n",bian[i*2].f-bian[i*2].w);
}
}
return 0;
}

最新文章

  1. Dapper-据说stackoverflow使用的orm
  2. ***PHP Notice: Undefined index: ..问题的解决方法
  3. SqlServer判断表是否存在
  4. 转:不应该不知道C++的常用库
  5. codeforces 487A A. Fight the Monster(二分)
  6. 新秀翻译(两)——使用Java通用配置模板方法模式
  7. mount挂载和交换分区swap
  8. centos6.8 编译安装lnmp php7.2 mysql5.6 nginx1.1.4
  9. HTML 块级元素 行内元素
  10. JSONObject.fromObject--JSON与对象的转换
  11. 利用SSH反向隧道,连接内网服务器
  12. HDU1233(Kruskal&amp;Prim两解)
  13. [svc]glusterfs的简单部署
  14. 使用gitblit搭建自己的代码存储仓库
  15. jquery 中attr()的一个用法
  16. Redis基于eval的多字段原子增量计算
  17. (1) English Learning
  18. 自动化运维工之Ansible(1)
  19. MyBatis入门实例-包括实体类与数据库字段对应&amp;CLOB字段处理
  20. c# 获取项目根目录方法

热门文章

  1. P3469 [POI2008]BLO-Blockade tarjan
  2. JSP-Runoob:JSP 生命周期
  3. P2258 子矩阵(dp)
  4. 微信小程序压缩图片并上传到服务器(拿去即用)
  5. JavaScript--什么是函数
  6. Paint、Canvas
  7. Android Thermal-engine
  8. cms中某些标题链接的单独写法
  9. 移动web——轮播图
  10. (转) Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(四)