首页 > 编程语言 >有向图的DFS(c++题解)

有向图的DFS(c++题解)

时间:2024-03-16 13:58:06浏览次数:16  
标签:有向图 int 题解 1000005 样例 c++ vis 顶点

题目描述

给定一个有向图(不一定连通),有N个顶点,M条边,顶点从1..N依次编号,求出字典序最小的深度优先搜索顺序。

输入格式

第1行:2个整数,N(1≤N≤200)和M(2≤M≤5000) 接下来M行,每行2个整数I,J,描述一条边从顶点I指向顶点J

输出格式

仅一行,一个顶点编号序列,表示字典序最小的深度优先搜索序列.顶点之间用一个空格分开

样例

样例输入
复制3 3
1 2
1 3
2 3
样例输出
复制1 2 3

_____________________________________________________________________________

写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

_____________________________________________________________________________

#include<bits/stdc++.h>
using namespace std;
int n,m,u,v;
bool vis[1000005];
vector<int> a[1000005]; 
void DFS(int x){
	vis[x]=true;
	cout<<x<<" ";
	for(auto i:a[x]){
		if(vis[i])continue;
		DFS(i);
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>u>>v;
		a[u].push_back(v);
	}
	for(int i=1;i<=n;i++){
		sort(a[i].begin(),a[i].end());
	}
	for(int i=1;i<=n;i++){
		if(!vis[i])DFS(i);
	}
}

标签:有向图,int,题解,1000005,样例,c++,vis,顶点
From: https://blog.csdn.net/hb_zhyu/article/details/136759494

相关文章

  • C++模板的实例化
    C++模板模板并不是真正的函数或类,它仅仅是编译器用来生成函数或类的一张“图纸”。模板不会占用内存,最终生成的函数或者类才会占用内存。由模板生成函数或类的过程叫做模板的实例化,相应地,针对某个类型生成的特定版本的函数或类叫做模板的一个实例。在学习模板以前,如果想针对不同......
  • C++模板中的非类型参数
    C++模板模板是一种泛型技术,目的是将数据的类型参数化,以增强C++语言(强类型语言)的灵活性。C++对模板的支持非常自由,模板中除了可以包含类型参数,还可以包含非类型参数,例如:template<typename T, int N> class Demo{ };template<class T, int N> void func(T (&arr)......
  • 首师大附中集训D6日报(20231215)-题解部分
    T1是dp设fi0不含k的情况书fi1含k的情况数第一步优化:前缀和维护f两个数组的前缀和通过前缀转移第二步优化:发现前缀和能矩阵乘法优化,所以矩阵快速幂就可以说起来挺简单,式子也不算难推,但就特别难写,主要的难度在于设置矩阵上面T2不知怎么一直卡在35,但是打的总体上肯......
  • C++示例:学习C++标准库,std::unordered_map无序关联容器的使用
    01std::unordered_map介绍std::unordered_map是C++标准库中的一种无序关联容器模板类,它提供了一种将键映射到值的方法。它的底层基于哈希表实现,内容是无序的,可以在平均情况下在O(1)的时间复杂度内完成插入、查找和删除操作。值得注意的是,哈希表可能存在冲突,即不同的键值......
  • 矿场搭建 题解
    题目描述煤矿工地可以看成是由隧道连接挖煤点组成的无向图。为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处。于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后,其他挖煤点的工人都有一条道路通向救援出口。请写一个程序,用来计......
  • nodejs打包问题解决实例
    node命令集合npmsetregistryhttps://registry.npm.taobao.org/npmconfigsetregistryhttps://registry.npmjs.org/npmconfigsetsass_binary_sitehttps://npm.taobao.org/mirrors/node-sass/npmgetregistry //npm安装包的提示操作目录权限不足npmconfigsetu......
  • 滴水逆向笔记系列-c++总结2-36.权限控制-37.虚函数-38.多态_绑定
    第三十六课c++3权限控制1.定义和实现分开写2.private和publicprivate权限说明私有变量在类外是无法访问的,只有在类内或者使用类内函数访问类内函数访问3.private真的不能访问吗反汇编看看t对象在初始化public和private成员时都是一视同仁的,在底层还是没区别,都是编......
  • 滴水逆向笔记系列-c++总结3-39.模板-40.引用_友元_运算符重载
    第三十八课c++6模板1.冒泡排序和折半查找voidSort(int*arr,intnLength) { inti; intk; for(i=0;i<nLength-1;i++) { for(k=0;k<nLength-1-i;k++) { if(arr[k]>arr[k+1]) { inttemp=arr[k]; a......
  • 滴水逆向笔记系列-c++总结4-41.new-delete-vector-42.链表
    第四十课c++8new-delete-vector1.内存空间复习在类外函数外的变量就是全局变量,程序一编译地址就已经确定了的临时数据,参数和局部变量就是在堆栈里而使用malloc函数动态申请的则是在堆里2.跟踪调试反汇编函数我们调用malloc函数申请内存,但是不是malloc一个函数完成整个......
  • CF1948F 题解
    对于每个询问,可以把这\(r-l+1\)个袋子包合并成一个有\(\sum\limits_{i=l}^ra_i\)个金币和\(\sum\limits_{i=l}^rb_i\)个银币的袋子。\([l,r]\)外的袋子同理也可以这样合并。假设\(sum_a=\sum\limits_{i=1}^na_i,sum_b=\sum\limits_{i=1}^nb_i\),\(......