搜索与图论:有向图的拓扑序列

news/2024/7/5 2:16:26

搜索与图论:有向图的拓扑序列

    • 题目描述
    • 参考代码

题目描述

在这里插入图片描述
输入样例

3 3
1 2
2 3
1 3

输出样例
···
1 2 3
···

参考代码

#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

const int N = 100010;

int n, m;
int h[N], e[N], ne[N], idx;
int d[N], q[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;
}



http://lihuaxi.xjx100.cn/news/2195918.html

相关文章

Nvidia/算能 +FPGA+AI大算力边缘计算盒子:中国舰船研究院

中国舰船研究院又称中国船舶重工集团公司第七研究院&#xff0c;隶属于中国船舶重工集团公司&#xff0c;是专门从事舰船研究、设计、开发的科学技术研究机构&#xff0c;是中国船舶重工集团公司的军品技术研究中心、科技开发中心&#xff1b;主要从事舰船武器装备发展战略研究…

大模型常见工程化工具:微调、量化、部署、Agent、RAG等

包括微调&#xff08;Axolotl、Llama-Factory、Firefly、Swift、XTuner&#xff09;、量化&#xff08;AutoGPTQ、AutoAWQ、Neural Compressor&#xff09;、部署&#xff08;vLLM、SGL、SkyPilot、TensorRT-LLM、OpenVino、TGI&#xff09;、本地运行&#xff08;MLX、Llama.c…

使用NetAssist网络调试助手在单台计算机上配置TCP服务器和客户端

要使用NetAssist网络调试助手在同一台计算机上配置一个实例作为服务器&#xff08;server&#xff09;和另一个实例作为客户端&#xff08;client&#xff09;&#xff0c;可以按照以下步骤进行操作&#xff1a; 前提条件 确保已经安装NetAssist网络调试助手&#xff0c;并了…

使用opencv在图像上画带刻度线的十字线,以图像中心点为0点

使用OpenCV在图像上绘制带刻度线的十字线&#xff0c;可以通过以下步骤实现。我们将首先找到图像的中心点&#xff0c;然后绘制水平和垂直线&#xff0c;并在这些线的适当位置绘制刻度线。以下是详细的C代码示例&#xff1a; #include<opencv2\opencv.hpp> //画十字标注…

了解 ADC 的幅度量化误差

ADC 将输入值转换为一组离散级别中的一个值&#xff0c;并输出数字代码以指定量化级别。量化过程会给系统带来一些误差。 本文将通过将斜坡输入应用于量化器来研究量化误差。然后&#xff0c;我们将看一个示例&#xff0c;其中量化误差类似于噪声源。此外&#xff0c;我们将讨…

深度学习的模型剪枝

深度学习的模型剪枝 模型剪枝&#xff08;Model Pruning&#xff09;是深度学习中一种减少模型复杂度、提高计算效率的方法。通过删除冗余的神经元或连接&#xff0c;剪枝能够在不显著影响模型性能的前提下&#xff0c;减少模型参数数量、降低计算和存储需求。以下是对深度学习…

无限滚动分页加载与下拉刷新技术探析:原理深度解读与实战应用详述

滚动分页加载&#xff08;也称为无限滚动加载、滚动分页等&#xff09;是一种常见的Web和移动端应用界面设计模式&#xff0c;用于在用户滚动到底部时自动加载下一页内容&#xff0c;而无需点击传统的分页按钮。这种设计旨在提供更加流畅、连续的浏览体验&#xff0c;减少用户交…

服务器数据恢复—强制上线raid5阵列离线硬盘导致raid不可用的数据恢复案例

服务器数据恢复环境&#xff1a; 某品牌2850服务器中有一组由6块SCSI硬盘组建的raid5磁盘阵列&#xff0c;linux操作系统ext3文件系统。 服务器故障&#xff1a; 服务器运行过程中突然瘫痪。服务器管理员检查阵列后发现raid5阵列中有两块硬盘离线&#xff0c;将其中一块硬盘进行…