摘要:
拓扑排序:事情优先级排序special judgeAOV网络:有向无环图稀疏图:e<nlogn 用vector稠密图:e》n^2 用数组map[i][j] = 1 有边 0 无边思想:for(1~n) //循环n次找n个点 { 找入度为0且未标记的点;删除相连的点标记点; } 阅读全文
摘要:
#include<iostream>#include<vector>using namespace std;const int maxn = 500+10;vector<int>map[maxn];int save[maxn];int index[maxn];bool used[maxn];int n, m;int flag;//初始化void init(){for(int i=0; i<=n; i++){map[i].clear();}memset(used, false, sizeof(used));memset(index, 0, sizeof( 阅读全文
摘要:
一、概述 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若<u,v> ∈E(G),则u在线性序列中出现在v之前。 通常,这样的线性序列称为满足拓扑次序(TopoiSicai Order)的序列,简称拓扑序列。注意: ①若将图中顶点按拓扑次序排成一行,则图中所有的有向边均是从左指向右的。 ②若图中存在有向环,则不可能使顶点满足拓扑次序。 ③一个DAG的拓扑序列通常表示某种方案切实可行。 【例】一本书的作者将书本中的各章节学习作为顶点,各章节的先学后修关系作为边,构成一个有向图。按 阅读全文
摘要:
1、堆栈栈是一种特殊的线性表,插入或删除栈元素的运算只能在表的一端进行,称运算的一端为栈顶,另一端称为栈底。队列也是一种特殊的线性表(基本操作都是线性操作的子集)。 特点:后进先出栈又称为“后进先出”的线性表,简称LIFO表。栈的链式实现是以链表作为栈的存储结构,并在这种存储结构上实现栈的基本运算。栈的链式实现称为链栈。2、有向无环图描述含有公共子式的表达式的有效工具;描述一项工程或系统的进行过程的有效工具。3、一些概念通常我们把计划、施工过程、生产流程、程序流程等都当成一个工程,一个大的工程常常被划分成许多较小的子工程,这些子工程称为活动。这些活动完成时,整个工程也就完成了。我们用一种有向图 阅读全文
摘要:
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1162题意: 最小生成树View Code 1 #include<iostream> 2 #include<algorithm> 3 #include<cmath> 4 using namespace std; 5 6 const int maxn = 100+10; 7 int far[maxn]; 8 int n, m; 9 int k; 10 struct Edge 11 { 12 const bool operator<(Edge &n)c 阅读全文
摘要:
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1102题意: 有N多个小镇,现在需要建路使所有小镇相通,间接跟直接,给你这些小镇直接的距离,但是有些小镇是已经有路相连的了,所以这两个小镇之间就不用再建路。方法: 用了prim跟kruskal都可以做出来,其实就是求最小生成树。只要把已经有路相通的两个小镇的距离改为0即可,不过在开数组时应该是开n*n*2,其他的就一如既往了。没什么特别要注意的!都是练习Kruskal跟prim算法的习题。View Code 1 #include<iostream> 2 #include<algo 阅读全文
摘要:
View Code 1 #include<iostream> 2 using namespace std; 3 4 const int INF = 0X3fffffff; 5 const int Max = 1005; 6 bool used[Max]; 7 bool vist[Max]; 8 int map[Max][Max]; 9 int dis[Max];10 int n, m;11 12 void Make_set()13 {14 for(int i=0; i<Max; i++)15 {16 for(int j=0; j<Max; j++)17 ... 阅读全文