首页 > 其他分享 >洛谷B3644 【模板】拓扑排序 / 家谱树

洛谷B3644 【模板】拓扑排序 / 家谱树

时间:2024-07-10 18:42:37浏览次数:11  
标签:洛谷 int 拓扑 sons ans 排序 B3644 节点 模板

传送门

Abstract

这篇题解主要介绍如何使用BFS去实现拓扑排序。


Idea

见下方注释


Code

#include <bits/stdc++.h>
using namespace std;

int n;                    // 记录点的数量
int in[105];              // 记录点的入度
vector<vector<int>> sons; // 记录每个点的儿子节点

int main()
{
    cin >> n;
    sons.resize(n + 1);
    for (int i = 1; i <= n; i++)
    {
        int x;
        while (1)
        {
            cin >> x;
            if (x == 0)
            {
                break;
            }
            in[x]++;
            sons[i].push_back(x);
        }
    }
    queue<int> q;
    for (int i = 1; i <= n; i++)
    {
        if (in[i] == 0) // 将所有入度为0的点添加到容器q中
        {
            q.push(i);
        }
    }
    vector<int> ans; // 记录拓扑排序后的序列
    while (!q.empty())
    {
        int u = q.front();
        q.pop();                                 // 将u节点删除
        ans.push_back(u);                        // u节点加入排好后的序列中
        for (int i = 0; i < sons[u].size(); i++) // 将u节点的所有儿子节点入度减一
        {
            in[sons[u][i]]--;
            if (in[sons[u][i]] == 0) // 若此儿子节点入度变为0,那么将他加入容器q
            {
                q.push(sons[u][i]);
            }
        }
    }
    for (int i = 0; i < ans.size(); i++) // 按顺序将序列打印出来
    {
        cout << ans[i] << " ";
    }
    return 0;
}

标签:洛谷,int,拓扑,sons,ans,排序,B3644,节点,模板
From: https://www.cnblogs.com/carboxylBase/p/18294778

相关文章

  • 洛谷P1347 排序
    传送门Abstract这篇题解主要介绍了拓扑排序的唯一性问题和存在性问题。Idea要想解决这题需要考虑到一下两点:拓扑排序的核心思路在于将所有入度为0的点一次加入序列,如果在某一个时刻图中存在多个入度为0的点,那么我们将无法判断它们的先后顺序,此时,拓扑序列就不唯一了。假设......
  • 易优CMS如何防止网站模板文件被仿盗?
    【操作步骤】1、先在模板目录/template创建相应的子目录,比如:style12、将要pc或mobile等模板目录文件拷贝到style13、前往后台的【基本信息】-【核心设置】里的前台模板风格的下拉可以看到相关的风格目录,即可进行切换;4、如果想做到模板文件路径避免暴露,建议将模板文件里的sk......
  • 易优CMS模板标签arcview单条文档输出单页模型栏目的详细内容
    [基础用法]标签:arcview描述:获取单条文档数据用法:{eyou:arcviewaid='文档ID'}<ahref="{$field.arcurl}">{$field.title}</a>{/eyou:arcview} 属性:aid=''指定文档ID,如果没有指定则获取当前文档内容页的文档IDid=''可以任意指定循环里的变量名替代field,假设id='field......
  • 易优CMS模板标签videolist视频列表
    [基础用法]标签:videolist描述:该标签用于视频模型选集功能,调用当前视频侧面选集列表。提示:搭配【videoplay视频播放】标签使用,默认播放选集列表的第一个。用法:{eyou:videolistaid='文档ID'autoplay='on'id='video'}  <ahref="javascript:void(0);"{$video.onclick}>{$vid......
  • emlog模板文件及目录说明
    css文件夹:存放模板所需的所有CSS样式文件。js文件夹:存放模板所需的所有JS文件。images文件夹:存放模板所需LOGO等图片资源。preview.jpg:在后台模板选择界面显示的模板预览图,500x300jpg格式。header.php:站点头部信息,一般包页面head信息和顶部标题、导航栏。echo_log.php:......
  • 洛谷CF1342B Binary Period题解
    原题解和原题。这道题比较水。这道题分两种情况,分别为$t$由一种字符构成和由两种字符构成两种情况。$t$只有$0$或$1$。此时的$k$就是$1$,直接输出$t$就是最好的选择。$t$既有$0$又有$1$。此时的$k$为$2$,字符串由01或10构成。我们设$a_i$为字符串......
  • 模板大集合
    模板合集[Vani有约会]雨天的尾巴/【模板】线段树合并题面:题目背景深绘里一直很讨厌雨天。灼热的天气穿透了前半个夏天,后来一场大雨和随之而来的洪水,浇灭了一切。虽然深绘里家乡的小村落对洪水有着顽固的抵抗力,但也倒了几座老房子,几棵老树被连根拔起,以及田地里的粮食被弄......
  • 洛谷P1073 最优贸易 (分层图)
    题意:多个节点,起点到终点,每个点可以买或卖水晶球,每个点水晶球的价格不一样(买卖价格相同)。问最多买卖一次,能赚取最高多少差价?(在赚不到差价的情况下他就无需进行贸易)。思路:“这个'b'题,我不看题解我是想不出来,但是确实是个很好的题”。有两种做法,双向spfa和分层图,我就只说分层图做法(......
  • 【模板】多项式乘法逆
    变量的值被莫名修改,往往是因为地址的传递导致两个变量绑定在了一起怎样搜索替换double为longdouble呢?或许可以先转化为longDouble,再转化为longdouble点击查看代码#include<bits/stdc++.h>usingnamespacestd;longlonga[300005],tmp[300005];longlongf0[300005],......
  • 洛谷 P1853 投资的最大效益 蒟蒻题解
    洛谷P1853投资的最大效益蒟蒻题解题目背景约翰先生获得了一大笔遗产,他暂时还用不上这一笔钱,他决定进行投资以获得更大的效益。银行工作人员向他提供了多种债券,每一种债券都能在固定的投资后,提供稳定的年利息。当然,每一种债券的投资额是不同的,一般来说,投资越大,收益也越大,而......