有dalao帮帮弟弟吗
查看原帖
有dalao帮帮弟弟吗
306464
䒛夢楼主2020/10/2 16:20
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<string>
#include<vector>
#include<cstring>
using namespace std;
int n,m,x,y,pre[100100];
queue<int>q;
vector<int>v[100100];
struct node{
	int x,y;
}a[1001000];
bool cmp(node a , node b)
{
	return a.y<b.y;
}
void dfs(int x)
{
	if(pre[x]==1)
		return ;
	pre[x]=1;
    cout<<x<<" ";
	for(int i=0 ; i<v[x].size() ; ++i)
		if(pre[v[x][i]]==0)
			dfs(v[x][i]);
}

void bfs(int x)
{
	q.push(1);
	pre[x]=1;
	while(q.size()!=0)
	{
		int y=q.front();q.pop();
        cout<<y<<" ";
		for(int i=0 ; i<v[y].size() ; ++i)
		{
			if(pre[v[y][i]]==0)
			{
				q.push(v[y][i]);
				pre[v[y][i]]=1;
			}
		}
	} 
}
int main()
{
	cin>>n>>m;
	for(int i=1 ; i<=m ; ++i)
	cin>>a[i].x>>a[i].y;
	sort(a+1 , a+1+n ,cmp);
	for(int i=1 ; i<=m ; ++i)
	v[a[i].x].push_back(a[i].y);
	dfs(1);
	cout<<endl;
	memset(pre , 0 , sizeof(pre));
	bfs(1);
	return 0;
# }
2020/10/2 16:20
加载中...