dag图

DAG及拓扑排序

喜你入骨 提交于 2019-12-04 09:33:17
1.有向无环图和拓扑排序 有向无环图( Directed Acyclic Graph,简称DAG );拓扑排序指的对DAG一个有序的线性排列。 https://github.com/WuYiMi/Myrepository/blob/master/DS/Graph.java 来源: https://www.cnblogs.com/lbrs/p/11854044.html

Cow Traffic(正反向建图+DAG拓扑排序)

﹥>﹥吖頭↗ 提交于 2019-12-02 19:47:00
题意 有N(1<=N<=5000)个点,m条边(1<=M<=50000)。起点可以是任何一个入度为0的点,终点是N。求从起点到终点的所有路中,经过次数最大的一条路。输出经过次数。(规定每个点需要连接到编号更大的点,且不存在循环) 题解 该图为DAG(有向无环图),可利用拓扑排序,正反向建图分别进行两次拓扑排序。 根据乘法原理,在一条边M(u->v)上,通过边M的次数为从源点到达u的方式数量×从终点到达v的方式数量。 Code #include<cstdio> #include<cstring> #include<algorithm> #include<queue> using namespace std; struct node{ int to,next; }edge1[50005],edge2[50005]; int n,m; int cnt1,head1[5005],indegree1[5005],num1[5005]; int cnt2,head2[5005],indegree2[5005],num2[5005]; void add(int u,int v) { /*正向建图*/ edge1[cnt1].to=v; edge1[cnt1].next=head1[u]; head1[u]=cnt1++; /*反向建图*/ edge2[cnt2].to=u; edge2[cnt2