public void topoSort(){//仅仅针对有向图,基本思路是找到一个无后继的结点,将其删除,并放到排序数组的尾端,依次循环。直到没有结点。
int originalVertex = nVertex;
while(nVertex > 0){
int noSucVert = getNoSuccessorVertex();//获取一个无后继结点
if(noSucV...
分类:
编程语言 时间:
2015-03-30 11:24:32
阅读次数:
155
这个题是个模板题,可以直接用拓扑排序的模板来做,AC代码#include #include#include using namespace std;const int N = 1000;int n, m;int Map[N][N];int topNum[N];bool toposort(int *r...
分类:
编程语言 时间:
2015-03-27 21:59:24
阅读次数:
222
拓扑排序拓扑排序主要有无前驱,无后继和dfs三种方法; 若只需判断是否为拓扑序列(DAG),可用上述拓扑排序看是否排序成功,也可用floyd传递闭包;无前驱的拓扑排序法:/* 无前驱的拓扑排序法 */bool toposort(){ queue q; while(!ans.empty()...
分类:
编程语言 时间:
2015-03-11 16:59:08
阅读次数:
244
题意:给定一些任务,和任务序列 i j,意思是要求任务 i 必须要在任务 j 前完成。给出这样的任务序列。
思路:拓扑排序。
注意的是任务是从1开始的到n。
Code:
#include
#include
bool dfs(int u,int n);
bool toposort(int n);
int graph[105][105];
int topo[105];
int t;
in...
分类:
编程语言 时间:
2015-02-04 21:49:34
阅读次数:
226
拓扑排序:对有向图的所有结点排序,使得每一条有向边(u,v)对应的u都排在v的前面。
如果图中存在有向环,则不存在拓扑排序,反之则存在。把不包含有向环的有向图称为有向无环图(Directed Acyclic Graph,DAG)。
//因为查找的是有向边(u,v),所以在放置u之前需要把比u偏序大的所有的v放置好。
//所以,所有元素的放置是从后往前放的。
//用到的vis数组,vis[u]=...
分类:
编程语言 时间:
2015-02-04 20:26:34
阅读次数:
255
CodeForces510 C. Fox And Names(拓扑排序)...
分类:
编程语言 时间:
2015-02-03 23:04:19
阅读次数:
249
#include
#include
#define maxn 10002
int ans, queue[maxn];
struct Node{
int to, next, val;
} map[maxn << 1];
struct node{
int first, money, indegree;
} head[maxn];
bool topoSort(int n)
{...
分类:
其他好文 时间:
2014-08-02 10:07:43
阅读次数:
196
题意:坐飞机从 a 地到 b 地 ,在最多停留s次时 , 最小花费是多少?
在题目给出的地点 , 是按从远到近给出的 , 并且给出的航班中 , 不会有从远地点到近地点的航班。
因此从这可以看出 , 题目给的图是一个DAG图 , 那么我们就能用toposort来找最短路。
注意: 会有重边
解法:
构造一个数组 d[i][j] , 表示从开始点 s 到点 i...
分类:
其他好文 时间:
2014-05-10 08:51:56
阅读次数:
391