代码编织梦想

#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()
{
int hh=0,tt=-1;
for(int i=1;i<=n;i++)
if(!d[i])()
q[++tt]=i;
while(hh<=tt)
{
int t=q[hh++];
for(int i=h[t];i!=-1;i=ne[i])
{
int j=e[i];
d[j]--;
if(d[j]==0)q[++tt]=j;
}
}
return tt==n-1;
}
int main()
{
cin>>n>>m;
memset(h,-1,sizeof h);
for(int i=0;i<m;i++)
{
int a,b;
cin>>a>>b;
add(a,b);
d[b]++;
}
if(topsort())
{
for(int i=0;i<n;i++)printf("%d",q[i]);
puts("");
}
else puts("-1");
return 0;
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sskkk_/article/details/128859391

【拓扑序列】-求邻接表储存的有向图的拓扑序列-爱代码爱编程

#include <iostream> #include <stack> using namespace std; typedef struct ArcNode { int adjvex; struct ArcNode *nextarc; } ArcNode; typedef struct VNode {

拓扑排序(有向图的拓扑序列)-爱代码爱编程

拓扑排序 一、有向图的拓扑序列二、代码实现 一、有向图的拓扑序列 给定一个n个点m条边的有向图,点的编号是1到n,图中可能存在重边和自环。 请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出-1。 若一个由图中所有点构成的序列A满足:对于图中的每条边(x, y),x在A中都出现在y之前,则称A是该图的一个拓扑序列。 二、代码实

【ACWing】848. 有向图的拓扑序列-爱代码爱编程

题目地址: https://www.acwing.com/problem/content/850/ 给定一个 n n n个点

848. 有向图的拓扑序列【详解】-爱代码爱编程

https://www.acwing.com/problem/content/850/ 有向无环图(拓扑图) 一定存在一个拓扑序列, 有环图,一定不存在拓扑序列有拓扑排序就一定是无环的,有环就一定没有拓扑排序。因此可以通过拓扑排序来判断一个有向图是否有环。 因为有环就没法将环中的点存进队列,没有入度为0的点可以进行突破。 第一步: 首先入度为零的

848. 有向图的拓扑序列-爱代码爱编程

848. 有向图的拓扑序列 给定一个 n 个点 m 条边的有向图,点的编号是 1 到 n,图中可能存在重边和自环。 请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出 −1。 若一个由图中所有点构成的序列 A 满足:对于图中的每条边 (x,y),x 在 A 中都出现在 y 之前,则称 A 是该图的一个拓扑序列。 输入格式 第一行包含两个

图论--拓扑排序 有向图的拓扑序列 java-爱代码爱编程

拓扑序列:序列中任意两个数,前面的数都存在指向后面的数的有向边,反之则不成立,用于有向无环图,类似于:确定工程施工顺序 有向无环图又称为拓扑图 https://www.acwing.com/problem/content/850/ 给定一个 n 个点 m 条边的有向图,点的编号是 1 到 n,图中可能存在重边和自环。 请输出任意一个该有向图的拓扑序列

有向图的拓扑排序_戴回回的博客-爱代码爱编程

拓扑排序。任意给定一个有向图,设计一个算法,对它进行拓扑排序。拓扑排序算法思想:a.在有向图中任选一个没有前趋的顶点输出;b.从图中删除该顶点和所有以它为尾的弧;c.重复上述a、b,直到全部顶点都已输出,此时,顶点输出序列即为一个拓朴有序序列;或者直到图中没有无前趋的顶点为止,此情形表明有向图中存在环。  拓扑排序算法思想: 在有向图中任选一个没有前趋

有向图的拓扑序列( 拓扑排序 + bfs )_⑥号同学要睡觉的博客-爱代码爱编程

给定一个 n 个点 m 条边的有向图,点的编号是 1 到 n,图中可能存在重边和自环。 请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出 −1。 若一个由图中所有点构成的序列 A 满足:对于图中的每条边 (x,y),x 在 A 中都出现在 y 之前,则称 A 是该图的一个拓扑序列。 输入格式 第一行包含两个整数 n 和 m。 接下来 

848. 有向图的拓扑序列(bfs应用)_依嘫_吃代码的博客-爱代码爱编程

题目所属分类 属于BFS 有向无环图一定是拓扑序列,有向有环图一定不是拓扑序列 时间复杂度 O(n+m) , n表示点数,m 表示边数 原题链接 代码案例:输入样例: 3 3 1 2 2 3 1 3 输出样例

7-5 有向图的拓扑序列_江城子766的博客-爱代码爱编程

作者 唐艳琴  单位 中国人民解放军陆军工程大学 输出有向图的拓扑序列。 输入格式: 输入第一行给出两个正整数,分别表示图的节点数N(1<N≤10)、边数M(≤50)。随后的M行对应M条边,每行给出一对正整数,分别是有向边直接连通的两个节点的编号(编号从1到N依次进行)。 输出格式: 输出此图的拓扑序列,用一个空格隔开,最后也有一个空格;

day25|51.n皇后、37.解数独-爱代码爱编程

51.N皇后 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。 每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了

day52最长递增子序列-爱代码爱编程

力扣300.最长递增子序列 题目链接:https://leetcode.cn/problems/longest-increasing-subsequence/ 思路 dp数组的含义 dp[i]表示,以nums[i]结

leetcode 1071. greatest common divisor of strings(字符串的最大公约数)-爱代码爱编程

For two strings s and t, we say “t divides s” if and only if s = t + … + t (i.e., t is concatenated with itself

oj万题详解––卫星地图(c++详解)-爱代码爱编程

目录 题目 分析 参考代码 题目 题目描述 一张矩形的卫星地图,有M行N列。行列中的0表示空地,1表示有建筑。有3种类型的建筑: L型: 仅在一行上占据连续的若干个格子,长度至少为2,至多为N C型:仅在一列上占据连续的若干个格子,长度至少为2,至多为M S型:仅占据单个格子。 在同一行上或者同一列上可以出现多个

代码随想录算法训练营day53动态规划:1143.最长公共子序列,1035.不相交的线,53. 最大子序和-爱代码爱编程

要思考dp是由哪几个状态推导而来 1143.最长公共子序列 文章链接:代码随想录 (programmercarl.com) 思路:无思路 看完文章后的反思:与718.最长重复子数组的区别在于,此题不要求是连续的 (1)确定dp数组含义 dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的

tidb 6.5 新特性解析丨过去一年,我们是如何让 tiflash 高效又稳定地榨干 cpu?-爱代码爱编程

TiDB 6.5 LTS 版本已经发布了。这是 TiDB V6 的第二个长期支持版,携带了诸多备受期待的新特性:产品易用性进一步提升、内核不断打磨,更加成熟、多样化的灾备能力、加强应用开发者生态构建…… TiDB 6.5

​力扣解法汇总2325. 解密消息-爱代码爱编程

 目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描述: 给你字符串 key 和 message ,分别表示一个加密密钥和一段加密消息。解密 message 的步骤如下: 使用 key