int main()
{
scanf("%d%d",&n,&m);
int u,v,l,r,st,ed;
int sum=0;
st=0,ed=n+1;
rep(i,1,m) {
scanf("%d%d%d%d",&u,&v,&l,&r);
ac.AddEdge(u,v,r-l);
id[i]=ac.m-2;
sum+=l;
ac.AddEdge(st,v,l);
ac.AddEdge(u,ed,l);
ans[i]=l;
}
if(ac.Maxflow(st,ed)!=sum) {
puts("NO");
}
else {
puts("YES");
for(int i = 1; i <= m; ++i) {
printf("%d\n",ac.edges[id[i]].flow+ans[i]);
}
}
评论0
最新资源