首页 > TAG信息列表 > Toposort

OI loves Algorithm(一)——Toposort 之 Kahn

上次我更了一个叫做 OI loves Math 的东西,那么这次我们来更算法! 当然了,这种东西我遇到啥我就更啥…… 先科普科普何谓拓扑排序。 拓扑排序指的是给你一个 DAG (Directed Acyclic Graph) ,让你排这些点,使得对于每条边 $ U \to V $ ,都存在 $ U \lt V $ 。 Kahn 算法的核心在于维护

拓扑排序

  #include<cstdio> #include<iostream> #include<algorithm> #include<vector> #include<queue> using namespace std; int n, m; void topo(vector<int>& rec, queue<int>&q) { for (int i = 1; i <= n; i++)

[题解] [JSOI2015] 最小表示

题面 题解 可以发现, 若 \(u\) 到 \(v\) 可由从 \(u\) 到 \(v\) 的另外一条路径而不走 \((u, v)\) 边到达, 则 \((u, v)\) 可删 正反用 bitset 维护一下传递闭包即可 Code #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <bitset> #

拓扑排序

#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #include<algorithm> #include<bitset> #include<ctime> using namespace std; const int N=105; int n,m,x,y,MAP[N][N],indegr

[题解]洛谷P4017 最大食物链计数

一开始不知道toposort可以做,写了个记忆化搜索,结果T了qwq 然后一看题解,豁然开朗,本蒟蒻见识浅短,还不曾知道还有这种操作 设 f[i] 是以i结尾的最长链个数,那么 f[i]=∑f[k] (k有一条出边指向i) 然后统计出度为0的点i的f[i],累加就是ans 这一过程显然可以在toposort里VAN成 代码: #in