蒟蒻(码风不错?) 图的遍历,求调,按照题解一修改无用
  • 板块题目总版
  • 楼主_xEr_
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/1/31 18:05
  • 上次更新2023/10/24 02:20:57
查看原帖
蒟蒻(码风不错?) 图的遍历,求调,按照题解一修改无用
672815
_xEr_楼主2023/1/31 18:05
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
int n,m;
struct Node{
	int s,e;
	bool operator<(Node a){
		if(s==a.s)return e<a.s;
		return s<a.s; 
	}
};
vector<Node>edge;
vector<int>a[100009];
int h[100009];
void dfs(int q){
	h[edge[i].e]=1;
	cout<<q<<' ';
	for(auto i:a[q]){
		if(h[edge[i].e]==0)dfs(edge[i].e);
	}
}
int bk[10000009],head,tail;
void bfs(){
	memset(h,0,sizeof(h));
	bk[tail++]=1;h[1]=1;
	while(head<tail){
		printf("%d ",bk[head]);
		for(auto i:a[bk[head]])
			if(h[edge[i].e]==0)bk[tail++]=edge[i].e,h[edge[i].e]=1;
		head++;
	}
}
int main(){
	cin>>n>>m;
	while(m--){
		int x,y;cin>>x>>y;
		edge.push_back(Node{x,y}); 
	}
	sort(edge.begin(),edge.end());
	for(int i=0;i<edge.size();i++)
		a[edge[i].s].push_back(i); 
	dfs(1);
	puts("");
	bfs();
}

P5318

2023/1/31 18:05
加载中...