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

题目描述

给定一个有向图(不一定连通),有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

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


cpp 复制代码
#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);
	}
}
相关推荐
wabs66616 小时前
关于动态规划【力扣1035.不相交的线和53.最大子数组和的思考】
算法·leetcode·动态规划
退休倒计时16 小时前
【每日一题】LeetCode 199. 二叉树的右视图 TypeScript
算法·leetcode·typescript
可编程芯片开发16 小时前
通过MATLAB实现PID控制器,积分分离控制器以及滑模控制器
算法
kebidaixu17 小时前
两轮BMS 短路保护策略详解
算法
王老师青少年编程17 小时前
2026年6月GESP真题及题解(C++二级):完全平方数计数
c++·题解·真题·gesp·二级·2026年6月·完全平方数计数
zwenqiyu17 小时前
非线性字符串数据结构串讲
数据结构·c++·学习·算法
z小猫不吃鱼17 小时前
03 Optimal Brain Surgeon 详解:Hessian 剪枝为什么有效?
算法·机器学习·剪枝
硕风和炜18 小时前
【LeetCode: 1301. 最大得分的路径数目 + DP】
java·算法·leetcode·动态规划·dp·记忆化搜索
用户990450177800918 小时前
做了一个AI诊断,参考倪海厦中医理论,科学养生
算法
努力中的编程者18 小时前
STL-vector的模拟实现
开发语言·c++·算法·stl·vector