
拓扑排序
超级码力奥
这个作者很懒,什么都没留下…
展开
-
拓扑排序+差分约束:车站分级
原题链接:https://www.acwing.com/problem/content/458/这样进行优化的话,从左边走到右边,左边的点到右边的点的距离还是1,但是边的数量从n*m -> n+m参考详细的题解:https://www.acwing.com/solution/content/17458//* 对于每趟列车,不能经过的点到可以经过的点建边。其实就是一个差分约束问题 和奖金那道题挺像的。 由于边的数量可能有很多,这里有一个优化,建一个虚拟的点,先让起点到原创 2022-03-10 10:45:21 · 270 阅读 · 0 评论 -
拓扑排序:可达性统计
原题链接:https://www.acwing.com/problem/content/166/图源:https://www.acwing.com/solution/content/32117/#include <algorithm>#include <bitset>#include <cstring>#include <iostream>#include <queue>using namespace std;const i原创 2022-03-10 09:44:46 · 166 阅读 · 0 评论 -
拓扑排序:奖金
原题链接:https://www.acwing.com/problem/content/description/1194//* 反向建图,建立b->a的图,然后求一篇拓扑排序 假设有虚拟源点,刚开始从根节点向下扩展,每个点都是100 然后顺着拓扑序,每个点都需要在父节点的基础上加一, 一个点有可能有多个父节点,要维护一个最大值。*/#include <cstdio>#include <cstring>#include <io原创 2022-03-10 09:26:17 · 355 阅读 · 0 评论 -
拓扑排序:家谱树
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 110, M = N * N / 2;int n;int h[N], e[M], ne[M], idx;int q[N];int d[N];void add (int a, int b){ e[idx] = .原创 2022-03-10 08:59:14 · 454 阅读 · 0 评论 -
拓扑排序 = 拓扑图 = 有向无环图
#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int N=100010;int n,m;int h[N],e[N],ne[N],idx;int q[N],d[N];void add(int a,int b){ e[idx]=b,ne[idx]=h[a],h[a]=idx++;}bool topsort(){ ..原创 2022-03-10 08:48:49 · 189 阅读 · 0 评论