LINK:Lis-The Postman
看完题觉得 虽然容易发现是有向图欧拉回路 但是觉得很难解决这个问题。
先分析一下有向图的欧拉回路:充要条件 图中每个点的入度-出度=0且整张图是一个强连通分量。
证明:首先考虑前者 这个思想是 从一个点出去必然还能回来所以可以形成回路 后者保证了图是联通的。
但是注意观察题目中有一些比较好的条件 每两个点之间的边最多有两条且方向不同。
题目给了k条必须要要连续走的路径 容易想到多条路径可以合并在一起。
这个操作看起来难做 但是 把边进行标号 然后只需要前驱和后继进行合并即可。
判定条件:1 图中原本的点入度-出度=0.2 一条边在一条路径出现两次就是错的 3 一条边有多个前驱后继就是错的。
这样 我们可以把一些边给合并起来了。我们可以要求一走走完这些边。
4 这些边合并在一起后 存在环了那么肯定也走不了。
剩下的就是一个正常的图了 跑欧拉回路即可。
5 在新建的图中再次判断点的出度和入度。
6 最后需要判断图联通与否。
7 判断是否可以从1出发
8 虽然没要求输出方案但是这里点一下 倒序输出点 点和点相连就是边了 更快的方法 输出点的时候可以直接记录将这个点送进来的边是哪个直接输出边。
//#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
bzoj 1515 [POI2006]Lis-The Postman 有向图欧拉回路