![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
拓补排序
【杰杰】
这个作者很懒,什么都没留下…
展开
-
P1137 旅行计划
传送门思路:这题用二维数组存会超限,所以用邻接表存储图(这里搞了好久),剩下的事便很简单了,用vis表示到当前景点经过的最大的景点数,每次删除边时用一个简单的状态转移就可。#include<bits/stdc++.h>using namespace std;#define ll long longconst int mod = 0x3f3f3f3f;struct node{ int to,next;}g[200010];int in_degree[100100];int原创 2021-05-26 23:25:42 · 156 阅读 · 0 评论 -
P1960 郁闷的记者
传送门#include<bits/stdc++.h>using namespace std;#define ll long longconst int mod = 0x3f3f3f3f;int g[5100][5100];int in_degree[5100];int vis[5100];queue<int>q;int main(){ int n; cin>>n; int m; cin>>m; for(int i = 1; i原创 2021-05-25 21:28:50 · 162 阅读 · 0 评论 -
P2712 摄像头
传送门#include<bits/stdc++.h>using namespace std;#define ll long longconst int mod = 0x3f3f3f3f;int g[510][510];int in_degree[510];int vis[510];queue<int>q;int a[110];int main(){ int n; cin>>n; for(int i = 1; i <= n; i++)原创 2021-05-25 21:09:52 · 81 阅读 · 0 评论 -
拓补排序
概要在一个有向无环图中,对其所有顶点进行拓补排序,就是将所有顶点排成一个序列,并使得序列中所有的点满足对于边<u,v>,若u到v是可达的,则u在拓补序列中一定出现在v之前。过程①找到当前入度为0的点,加入拓补序列②将找到的入度为0的点的出边和该点删除③重复上面两个步骤简要实现图的存储方式不止一种使用数组f[]储存每个点地入度;将入度为0地点放入栈或者队列中;每次删除要使对应被删除的边地入度减一;最后当所有的点都已经删除则拓补排序完成,同时,栈或队列为空,若不为空,则说明图原创 2021-05-24 21:51:01 · 228 阅读 · 0 评论 -
P4017 最大食物链计数
传送门思路:拓补排序,题目给出了一条食物链的定义,即从入度为0开始到出度为0结束,用f[]数组储存每个点的食物链个数。#include<bits/stdc++.h>using namespace std;#define ll long longconst int mod = 80112002;int g[5010][5010];int num[5010];queue<int>q;int out_degree[5010];int in_degree[5010];原创 2021-05-24 21:22:47 · 89 阅读 · 0 评论