当前位置: 首页 > news >正文

LG11068

题目保证了一开始图为 DAG,因此入度和出度为 \(0\) 的点都是存在的。那么先找一个出度为 \(0\) 的点,再把所有入度为 \(0\) 的点进入队列。每次取出队首,与出度为 \(0\) 的点,进行一次操作。操作后,这个点的出度变为 \(0\),可以在下次操作使用(这样也保证了每个点的出度不超过 \(1\))。同时要更新这个点的出边所对应的点。

因此只需要 \(n-1\) 次操作(初始出度为 \(0\) 的点不必),时间复杂度 \(O(n+m)\)

#include <iostream>
#include <cstdio>
#include <vector>using namespace std;vector<int> G[1000001];
int q[1000001],x,y,t,w,vis[1000001];
int n,m,id[1000001],od[1000001];int main()
{int u,v;cin >> n >> m;for( int i = 1 ; i <= m ; i ++ ){cin >> u >> v;od[u] ++;id[v] ++;G[u].push_back( v );}for( int i = 1 ; i <= n ; i ++ ){if( od[i] == 0 ) y = i;if( id[i] == 0 ) q[++ w] = i;}vis[y] = 1;cout << n - 1 << '\n';for( int i = 1 ; i < n ; i ++ ){t ++;x = q[t];cout << x << ' ' << y << '\n';for( auto v : G[x] ){id[v] --;if( id[v] == 0 && v != y )q[++ w] = v;}y = x;}return 0;
}
http://www.gsyq.cn/news/204.html

相关文章:

  • scp拷贝文件报错
  • 11.1 定义类和对象
  • C++小白修仙记_LeetCode刷题_队列
  • Fastjson 1.2.47 远程代码执行
  • MySQL事务
  • Python面向对象
  • buntu22.04 LTS安装docker以及docker-compose实践
  • 20分钟快速入门Docker
  • K8S的基础概念
  • 如何搭建K8S集群
  • 解决 .NET 7 在 Linux 上获取程序集的问题
  • MyBatis-Plus 实现PostgreSQL数据库jsonb类型的保存与查询
  • katalon常用定位元素Xpath合集
  • (期望)名字(name)
  • MathType7下载安装2025最新下载+安装+教程(附安装包)
  • 模板 AE PR 达芬奇 剪影
  • 如何自动删除重复执行的任务?
  • 开始更新第一篇
  • springboot~SpringData自定义Repository的正确方式
  • Linux之进程状态
  • 2. O(NlogN)的排序
  • React-手写支持多文件、并行上传、串行上传、分片上传、单文件上传、失败自动重试、自动上传/手动按钮上传切换
  • postcss-px-to-viewport-8-plugin无法转换tailwindcss样式问题
  • 82、SpringMVC 参数传递,浏览器和服务器之间的数据传输
  • 问卷调查数据库设计
  • Linux 系统调用详解与工作机制
  • The 2025 Sichuan Provincial Collegiate Programming Contest
  • 详细介绍:Android 热点开发的相关api总结
  • 十大经典排序算法 - lucky
  • 基于Operator方式和二进制方式部署prometheus环境