题意:有N个岛屿,M条路线,每条路都连接两个岛屿,并且每条路都有一个最大承载人数,现在想知道从最西边的岛到最东面的岛最多能有多少人过去(最西面和最东面的岛屿只有一个)。
分析:可以比较明显的看出来是一个最大流的问题,而且源点汇点也都给出了,可以用最基本的dinic解决,不过注意一些优化,都则会tle的,下面是dinic AC代码
============================================================================================================
;
;
;
];
;
memset(Head, -, , ;
; j=edge[j].next)
{
;
Q.push(v);
}
}
}
;
; j=edge[j].next)
{
== layer[u] && edge[j].flow)
{
].flow += flow;
uflow += flow;
);
;
; i<=N; i++)
{
scanf(;
}