拓扑序
Ray.C.L
不开longlong见祖宗
展开
-
可达性统计(拓扑序+dp)
思路:假设f[i]为i点能够到点的点数,那么i可以到达的点数就是等于他自己加上i可以达其他边的f值,可以得出f[i]=∑f[j]+1(j为i可以到达的边)f[i]=\sum f[j]+1(j为i可以到达的边)f[i]=∑f[j]+1(j为i可以到达的边),i要从最后一个入度为0的点开始向前推,所以我们先求拓扑序,然后求f,我们用二进制位去判断是否有边存在,最后统计二进制中1的个数 代码: #include<bits/stdc++.h> using namespace std; const in.原创 2021-05-28 11:30:21 · 181 阅读 · 0 评论 -
奖金(差分约束,拓扑序)
思路:要满足所有要求有解说明是DAG图,那么我们跑一遍拓扑序,知道谁是第一个(奖金最少的),然后从他开始按拓扑序向其他走最长路,dis[i]就是每个点员工满足所有要求的奖金最小值,最后求和。 代码: #pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; #define SIS std::ios::sy.原创 2021-03-30 20:49:57 · 71 阅读 · 0 评论 -
家谱树(拓扑排序)
思路:求个拓扑序,吧入度为0的全入队遍历一遍。 代码: #pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; #define SIS std::ios::sync_with_stdio(false) #define space putchar(' ') #define enter putchar('\.原创 2021-03-28 15:55:45 · 266 阅读 · 3 评论