3696. 构造有向无环图
Powered by:NEFU AB-IN
Link
文章目录
- 3696. 构造有向无环图
- 题意
- 思路
- 代码
3696. 构造有向无环图
-
题意
Codeforces Round 656 (Div. 3) E
给定一个由 n个点和 m条边构成的图。
不保证给定的图是连通的。
图中的一部分边的方向已经确定,你不能改变它们的方向。
剩下的边还未确定方向,你需要为每一条还未确定方向的边指定方向。
你需要保证在确定所有边的方向后,生成的图是一个有向无环图(即所有边都是有向的且没有有向环的图)。 -
思路
自己想的思路,可能偏麻烦
- 首先,将带方向的边连起来形成一个图g1,不带方向的边连起来,形成另一个图g
- 其次,对g1进行拓扑排序 O(n+m)O(n+m)O(n+m)
- 在拓扑排序途中,当遍历到一个节点u时
- 首先判断,它是不是已经遍历过了,或者在g1图中,还有边指向它。如果存在其中一种情况,说明不能作为遍历的点,可以直接pop
- 其次,可以得出结论,那么根据这个点u,在g图中遍历u的邻点v。首先,判断是否v已经在u前出队了,也就是拓扑序在前面,若没有的话,就在g图中连上 u到v的有向边,并且别忘了更新度
- 后面就跟拓扑排序一样了
- 在拓扑排序途中,当遍历到一个节点u时
- 最后,我们所有的边都在g1图中,那么dfs每个点,并标记,即可得出所有边
- 另外,当g1图本身成环,或者,最后输出的拓扑序列不是n个,那么都是无解
-
代码
/* * @Author: NEFU AB-IN * @Date: 2023-03-01 23:23:00 * @FilePath: \Acwing\3696\3696.cpp * @LastEditTime: 2023-03-01 23:58:06 */ #pragma GCC optimize(1) #pragma GCC optimize(2) // 先开优化 #pragma GCC optimize(3, "Ofast", "inline") #include <bits/stdc++.h> using namespace std; #define int long long #undef int#define SZ(X) ((int)(X).size()) #define ALL(X) (X).begin(), (X).end() #define IOS \ios::sync_with_stdio(false); \cin.tie(nullptr); \cout.tie(nullptr) #define DEBUG(X) cout << #X << ": " << X << '\n' typedef pair<int, int> PII;const int N = 3e5 + 10, INF = 0x3f3f3f3f;int deg[N]; bool st[N], vis[N]; void solve() {int n, m;cin >> n >> m;memset(st, 0, (n + 1));memset(deg, 0, (n + 1) * 4);memset(vis, 0, (n + 1));vector<int> g[n + 1], g1[n + 1];for (int i = 1; i <= m; ++i){int t, a, b;cin >> t >> a >> b;if (t){g1[a].push_back(b);deg[b]++;}else{g[a].push_back(b);g[b].push_back(a);}}queue<int> q;for (int i = 1; i <= n; ++i){if (!deg[i])q.push(i);}if (!SZ(q)){cout << "NO\n";return;}int cnt = 0;while (SZ(q)){auto u = q.front();q.pop();if (st[u] || deg[u])continue;for (auto &v : g[u]){if (!st[v]){g1[u].push_back(v);deg[v]++;}}st[u] = true; // 表示已经释放出去了cnt++;for (auto &v : g1[u]){if (!--deg[v]){q.push(v);}}}if (cnt != n){cout << "NO\n";return;}cout << "YES\n";function<void(int)> dfs = [&](int u) {vis[u] = 1;for (auto &v : g1[u]){cout << u << " " << v << '\n';if (!vis[v])dfs(v);}};for (int i = 1; i <= n; ++i){if (!vis[i])dfs(i);}return; }signed main() {IOS;int T;cin >> T;while (T--)solve();return 0; }
相关文章:
3696. 构造有向无环图
Powered by:NEFU AB-IN Link 文章目录3696. 构造有向无环图题意思路代码3696. 构造有向无环图 题意 Codeforces Round 656 (Div. 3) E 给定一个由 n个点和 m条边构成的图。 不保证给定的图是连通的。 图中的一部分边的方向已经确定,你不能改变它们的方向。 剩下的边…...
RuoYi-Flowable-Plus(代码生成)
RuoYi-Flowable-Plus搭建 若依所有扩展项目的代码生成功能都是一样的,RuoYi-Flowable-Plus为例来演示。 模块创建 1.创建新模块ruoyi-student2.编辑RuoYi-Flowable-Plus\pom.xml <dependency><groupId>com.ruoyi</groupId><artifactId>ruoy…...
训练CV模型常用的方法与技巧
最近参加一个CV比赛,看到有参赛者分享了自己训练图像识别模型时常用到的小技巧,故对其进行记录、整理,方便未来继续学习。整理了很多,它们不一定每次有用,但请记在心中,说不定未来某个任务它们就发挥了作用…...
[Java·算法·中等]LeetCode22. 括号生成
每天一题,防止痴呆题目示例分析思路1题解1分析思路2题解2分析思路3题解3👉️ 力扣原文 题目 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 输入:n 3 输出&…...
Git项目合并实践
Git项目合并实践 一、前言 环境 操作系统:Windows 10 专业版 代码托管平台:Gitee 场景 同一个项目,在某一个时间点,被另外一个团队拷贝和修改,并且代码不在同一个仓库,最后需要合并项目 不是同一个项…...
C++实战md5、base64算法实现(附源码)
C++常用功能源码系列 文章目录 C++常用功能源码系列前言一、常用加密算法1. md5是什么二、源码1. md52. base64、decode总结前言 本文是C/C++常用功能代码封装专栏的导航贴。部分来源于实战项目中的部分功能提炼,希望能够达到你在自己的项目中拿来就用的效果,这样更好的服务…...
P6专题:P6 EPPM和PPM基本概念
目录 引言 Oracles Primavera P6 Enterprise Project Portfolio Management(P6 EPPM) Oracles Primavera P6 Professional Project Management 引言 Oracle Primavera系列软件专注于项目密集型企业,其整个项目生命周期内所有项目的组合管…...
【为什么事务@Transactional会失效】
在Spring框架中,Transactional注解用于声明一个方法需要被包含在事务中,以确保数据库操作的一致性和完整性。Transactional注解通常用于Service层或DAO层的方法上。 Transactional注解失效可能是由以下原因引起的: 注解未被正确声明或配置&a…...
NLP中的对话机器人——模型的评估
引言 本文是七月在线《NLP中的对话机器人》的视频笔记,主要介绍FAQ问答型聊天机器人的实现。 模型的评估 我们如何评估模型的好坏?由于我们的数据集没有提供测试数据,所以我们很难评估模型的好 坏。如果我们要做非常严谨的评估,…...
数据挖掘知识规整与心得体会
一.大数据的特点: 数据多,类型多,更新快,更新内容多。 二.分类(classification)与混淆矩阵(confusion matrix) 这里的分类说的是二分类问题,比如说把人分为好人和坏人&a…...
修正一些formdesigner的一些bug与操作
之前集成了formdesigner表单设计器,但还是有些问题,所以进行一些bug修复与功能修正 一、之前组件布局的图标不见了 在main.js里增加下面一行 import /components/formdesigner/assets/iconfont/iconfont.js 效果如下: 二、选择列表没有数…...
前端网络安全
什么是同源策略同源指的是:协议、端口号、域名必须一致。他是浏览器的一个用于隔离潜在恶意文件的重要安全机制。限制了从同一个源加载的文档或脚本,与另一个源的资源进行交互。同源策略主要限制了三个方面:当前域下的js脚本不能够访问其他域…...
docker内存统计
在docker里top和在docker外top看内存都是没有变化的,但是用docker stats看mem uasge就一直在涨top命令和docker stats命令采集内存使用的方式不同所致。top命令采集的是当前进程的内存使用情况,而docker stats命令采集的是整个Docker容器的内存使用情况。…...
【IDEA】IDEA使用有道翻译引擎—详细配置步骤
目录 前言 步骤一:下载翻译工具Translate 步骤二:注册登录有道云平台 步骤三:配置有道翻译 前言 2022年10月 谷歌翻译已经不在中国了,所以IDEA配置谷歌翻译会出错。 步骤一:下载翻译工具Translate 打开idea设置set…...
js求解《初级算法》56.最长公共前缀
一、题目描述 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 输入:strs ["flower","flow","flight"] 输出:"fl" 输入:strs ["…...
嵌入式Linux(二十四)系统烧写
将uboot,linux kernel,.dtb,rootfs烧写到板子上的EMMC上,避免断网导致不能运行。 1. MfgTool工具介绍 一路解压之后,得到以下两项: ①Profiles文件夹:后续烧写文件放到这个文件夹。 其中关注…...
【ECNU】3496. 贪吃的 xjj 和贪心的 oxx(C++)
目录 题目 输入格式 输出格式 样例 提示 思路 代码 题目 单点时限: 2.0 sec 内存限制: 256 MB oxx 与 xjj 终于到了 Xiamen,他们第一件事就是去吃当地著名的特产椰子饼。 他们共买了 n 盒礼盒,第 i 盒含 ai 块椰子饼。oxx 与 xjj 约定让 oxx …...
【iOS】设置背景渐变色
drawRect函数 主要负责iOS的绘图操作,程序会自动调用此方法进行绘图。我在这个函数中绘制渐变背景色。 方法定义: -(void)drawRect:(CGRect)rect; 重写此方法,执行重绘任务-(void)setNeedsDisplay; 标记为需要重绘,异步调用dra…...
Scrapy框架(高效爬虫)
文章目录一、环境配置二、创建项目三、scrapy数据解析四、基于终端指令的持久化存储1、基于终端指令2、基于管道3、数据同时保存至本地及数据库4、基于spider爬取某网站各页面数据5、爬取本页和详情页信息(请求传参)6、图片数据爬取ImagesPipeline五、中…...
程序设计语言-软件设计(二十一)
数据结构与算法(二十)快速排序、堆排序(四)https://blog.csdn.net/ke1ying/article/details/129269655 这篇主要讲的是 编译与解释、文法、正规式、有限自动机、表达式、传值与传址、多种程序语言特点。 编译的过程 解释型 和 编译型 编译型过程&#…...
自动驾驶规划新范式:像人一样用‘矢量关系’思考,VAD三大安全约束详解
自动驾驶规划新范式:像人一样用‘矢量关系’思考,VAD三大安全约束详解 想象一下,在高峰时段的城市十字路口,人类驾驶员能瞬间判断左侧公交车的变道意图,同时预判右前方自行车可能出现的摇摆——这种基于空间关系的直觉…...
[Java 算法] 动态规划(4)
练习一 : 最长递增子序列 300. 最长递增子序列 - 力扣(LeetCode) class Solution {public int lengthOfLIS(int[] nums) {int n nums.length;int[] dp new int[n];// 初始化:每个元素至少是长度为1的子序列Arrays.fill(dp, 1);int maxLen …...
5分钟快速上手:解锁付费内容的终极指南
5分钟快速上手:解锁付费内容的终极指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息时代,优质内容常常被付费墙阻隔,但今天我要为你介绍一…...
终极moondream内存优化指南:解决大图像处理OOM问题的5个实用技巧
终极moondream内存优化指南:解决大图像处理OOM问题的5个实用技巧 【免费下载链接】moondream tiny vision language model 项目地址: https://gitcode.com/GitHub_Trending/mo/moondream moondream作为一款轻量级视觉语言模型(tiny vision langua…...
手机网站优化与App优化有什么不同_网站 SEO 外链建设应该如何进行
手机网站优化与App优化有什么不同_网站 SEO 外链建设应该如何进行 在当今移动互联网时代,无论是手机网站优化还是App优化,都是提升用户体验和提高网站流量的重要手段。这两者之间有许多不同之处,特别是在搜索引擎优化(SEO&#x…...
用pnpm安装一个软件显示包找不到的问题解决
问题总览 您遇到的是**pnpm环境缺失与目标包mmem0ai无法从npm registry获取**的双重问题,具体表现为两条错误链: sudo pnpm add mmem0ai → sudo: pnpm: command not found(sudo环境下未识别pnpm命令);直接运行pnpm ad…...
Z-Image-Turbo-辉夜巫女效果实测:LoRA微调模型在Gradio界面的高清出图表现
Z-Image-Turbo-辉夜巫女效果实测:LoRA微调模型在Gradio界面的高清出图表现 1. 模型简介与部署 Z-Image-Turbo-辉夜巫女是基于Z-Image-Turbo模型进行LoRA微调后的特殊版本,专门针对生成"辉夜巫女"风格图片进行了优化。该模型通过Xinference框…...
ChatGLM-6B惊艳案例:高考作文命题分析、范文生成与评分建议
ChatGLM-6B惊艳案例:高考作文命题分析、范文生成与评分建议 ChatGLM-6B智能对话服务:本镜像为CSDN镜像构建作品,集成了清华大学KEG实验室与智谱AI共同训练的开源双语对话模型ChatGLM-6B,提供开箱即用的智能对话体验。 1. 高考作文…...
编写程序实现智能乐器音准检测偏差时,提示“需要调音”,新手也能调好音。
1. 实际应用场景描述场景:一名吉他初学者刚刚买回一把新吉他,或者在干燥天气后琴弦音准发生了偏移。他不知道电子调音表如何使用,也不具备绝对音感。本系统功能:用户拨动琴弦(例如第 6 弦 E2),电…...
PyTorch 2.6 镜像使用教程:开箱即用,快速开启你的AI之旅
PyTorch 2.6 镜像使用教程:开箱即用,快速开启你的AI之旅 1. 为什么选择PyTorch 2.6镜像 PyTorch作为当前最流行的深度学习框架之一,其2.6版本带来了多项性能优化和新特性。但对于初学者来说,环境配置往往是最头疼的问题——CUDA…...
