可以试试将扫描线的排序方法从:
[](Line& a, Line& b) { return a.x < b.x; }
改为:
[](Line& a, Line& b) { // light 指入边出边的权值 if (a.x == b.x) return a.light < b.light; return a.x < b.x; }
因为在有一个出边和入边重合时需要先出后进