题目大意:给定一张有向无环图,有恰好k个无入度的点和k个无出度的点,对于一个边集如果这个边集恰好形成了从每个无入度的点到每个无出度的点的k条不相交的路径,那么这k对点就会对答案有一个贡献;如果对应关系如果是一个奇排列,对答案的贡献为-1,否则为+1。求所有贡献的和
首先不考虑路径是否相交
令f[i][j]为从第i个无入度的点走到第j个无出度的点的方案数,那么这个矩阵的行列式的值就是答案
那么...
分类:
其他好文 时间:
2015-04-14 19:42:43
阅读次数:
413
有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图。一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林。在工程计划和管理方面的应用除最简单的情况之外,几乎所有的工程都可分为若干个称作“活动”的子工程,并且...
分类:
编程语言 时间:
2015-04-14 00:35:20
阅读次数:
149
题目大意: 题目是说,给你一个n个节点的有向无环图,然后,对于这个无环图,我们对他进行拓扑排序,使得拓扑排序中的序列按照字典序的方式输出.解题思路: 直接套用toposort()模板。。。 先说说toposort()的含义: 拓扑排序就是说,我们在一完成一项工程的时候,这个工程分为了很多的子...
分类:
编程语言 时间:
2015-04-13 01:42:02
阅读次数:
156
1. HDU 1151 Air Raid题目描述有点长,就是说一个有向无环图,最少需要走几次能把整张图上的边遍历。典型的最小路径覆盖,答案就是顶点数-最大匹配数#include #include #include #include #include #include #include #includ...
分类:
其他好文 时间:
2015-04-09 00:58:37
阅读次数:
154
题目大意:
给你N个地点,M条有向边,已知构成的图是有向无环图。现在要在地点上放机器人通过M
条边来遍历N个地点,问:最少需要多少个机器人可以遍历N个地点。
思路:
这是一道求最小路径覆盖的题目。和一般最小路径覆盖的题目不一样的地方是:这里的点可
以重复遍历。也就是可以有两个及以上的机器人经过同一个点。 那么,先建立一个二分图,
两边都为N个地点。然后在原图的基础上,用Floyd求一次传递闭包,也就是如果点i可以到达
点j,而点j可以到达点k,那么可以当做点i可以直接跳过点j而到达点k,就可以建立一条有向...
分类:
其他好文 时间:
2015-04-07 19:40:57
阅读次数:
121
可以将图的拓扑排序看作是将图的所有结点在同一水平线上排开,图的所有有向边都从左指向右.有向无环图的拓扑排序算法:Toplogical-Sort(G) call DFS(G) to compute finish times v.f for each vertex v as each ver...
分类:
编程语言 时间:
2015-04-06 14:16:14
阅读次数:
230
拓扑排序
对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。
一个有向图无法拓扑排序时只有一种情况:该有向图中存在环。下面给出简单的判定有向图是否可拓扑排序的代码:
题意:给你一个N点和M条有向边的图,问...
分类:
编程语言 时间:
2015-04-01 17:38:34
阅读次数:
182
public void topoSort(){//仅仅针对有向图,基本思路是找到一个无后继的结点,将其删除,并放到排序数组的尾端,依次循环。直到没有结点。
int originalVertex = nVertex;
while(nVertex > 0){
int noSucVert = getNoSuccessorVertex();//获取一个无后继结点
if(noSucV...
分类:
编程语言 时间:
2015-03-30 11:24:32
阅读次数:
155
这题说的给了n个点m条边要求保证是一个有向无环图,可以删除至多k条边使得这个图的拓扑序的字典序最大,我们知道如果我们要排一个点的时候一定要考虑比他大的点是否可以、通过拆边马上拆出来,如果可以拆当然是拆,肯定保证字典序最大,如果不能拆,就不拆留着以后拆,当初这个比他大的点度数小于k的,最大是多少,这个...
分类:
其他好文 时间:
2015-03-29 13:33:31
阅读次数:
129
题意:n个点m条有向边组成的有向无环图,可以最多删除k条边让他的拓扑序最大。输出最大的拓扑序。
思路:在以前的topsort中是入读为零的点入队列,这里有k次机会可以删除边,那么我就把所有入度<=k的点全入队列,用优先队列维护最大的点序列号,去掉点最大序列号的所有入边,将它加入到拓扑序中,这样贪心是最优的。...
分类:
其他好文 时间:
2015-03-29 10:55:34
阅读次数:
144