摘要:
无向图。对于两个相连的点,如果A到终点的最短路径大于B到终点的最短路径,那么A可以往B走,求最终从起点到终点有多少种走法?首先我们可以直接预处理所有点到终点的最短路径。然后分别判断所有的边两点是否满足d[U[i]]>d[V[i]],然后把把满足条件的加入到一个新图中即可。由于新图是一个有向无环图,那... 阅读全文
摘要:
给一个无向图,有的边是特殊边,最多可以取一条特殊边,求最短路,并且输出路径。这样考虑,加入所有非特殊边,求出每个点到起点和终点的最短路。然后加入特殊边的时候,如果取当前这条特殊边,那么答案会是两点预处理路径长度加上该边长。直接保存最小答案即可。不过注意输出的格式还有一些其他的问题,还有加特殊边的时候... 阅读全文
摘要:
有n个宇航员,根据年龄限制,所有宇航员只能从事A或B中的一种任务,所有人都可以从事C的任务。有的宇航员之间相互讨厌,不能分在一组,求出一种满足条件的分配方案。2sat。mark[]中i+i和i+i+1分别表示i从事C工作或者他的特有工作。对于仇恨关系,我们可以知道U和V两个人不能同时从事C工作。于是... 阅读全文
摘要:
给一个无向图,外加一些特殊的连接原点的无向边。在不改变原点与所有点的最短路的情况下,最多可以删除多少条特殊边?首先我们把所有的边夹杂在一起。spfa跑出与所有点的最短路。接下来我们通过一次bfs来判断哪些特殊的边是可以删除的。这里面的原理跟迪杰斯特拉算法差不多。首先把原点加入队列,所有的特殊边按照长... 阅读全文
摘要:
白书上的例题。每种航班可以选择两种时间降落,如果想任意航班降落时间差的最小值最大,应该如何安排?二分时间,如果两个时间只差小于当前枚举的时间,说明这条边不可选,可以根据2sat的方法构图。然后判断安排方案是否合法即可。召唤代码君:#include #include #include #define ... 阅读全文
摘要:
判断能否从一个点同时找出两条不相交的路径到另外两个点。保证路径不相交,那么需要拆点。然后?好像就没什么了,直接最大流即可。不过,,,不需要求出所有的最大流,只要跑两次EK看看能否增广两次就行了。召唤代码君:#include #include #include #include #define max... 阅读全文
摘要:
给一个图,某些点需要单独以某一种颜色的线连接到1点,问如何安排能够使得整个图颜色最多的一条路颜色最少。显然,二分枚举然后加以颜色其实就是流量了,相当于对每条边限定一个当前二分的流量值,判断能否满流即可。召唤代码君:#include #include #include #define maxn 555... 阅读全文