首先将完全相同的边的权值累加。考虑这样一种trick:给边确定一个方向,由度数小的连向度数大的,若度数相同则由编号小的连向编号大的。这样显然会得到一个DAG。那么原图的三元环中就一定有且仅有一个点有两条入边了。并且每个点的出度不会超过√m,因为假设一个点连出了x条边那么其所连向的每个点也至少会有x条出边。先将每个点的所有出边按终点编号排序。然后枚举一条边,对其两端点的出边用双指针计算一下其中有多少重复点即可。这样每个环只会被计算一次。复杂度O(mlogm+m√m)。

  没地方交所以懒得写了。

05-11 11:35