首页 > 代码库 > BZOJ 1486 最小圈(二分+判负环)

BZOJ 1486 最小圈(二分+判负环)

题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1486

题意:给出一个有向图,边有权值。找到一个环,使得环上边的权值之和除以环上边的个数最小。

思路:二分答案x,每条边权值减去x,之后 找负环。从每个顶点开始DFS,记录到达某个顶点的距离,设当前DFS的顶点为u,距离dis[u]。下一个顶点v, 权值w,则dis[u]+w<=0时才DFS(v)。另外,若v是已经遍历过的,且dis[u]+w-dis[v](这个dis[v]是之前遍历时 记录的值)<=0则说明是负环。