20pts求助
查看原帖
20pts求助
912027
One_more_light楼主2023/1/13 12:47

rt,链式前向星式存图

#include<bits/stdc++.h>
using namespace std;
int tot,Next[1000005],Head[100005],Son[100005],t[100005],q[100005],head,tail,n,m;
struct XX
{
	int u,v;
}a[1000005];
void add(int x,int y)
{
	tot++;
	Next[tot]=Head[x];
	Son[tot]=y;
	Head[x]=tot;
}
void dfs(int x)
{
	cout<<x<<' ';
	t[x]=1;
	for(int i=Head[x];i;i=Next[i])if(!t[Son[i]])dfs(Son[i]);
}
void bfs(int x)
{
	q[1]=t[1]=1;
	cout<<"1 ";
	head=1;
	tail=1;
	while(head<=tail)
	{
		x=q[head];
		for(int i=Head[x];i;i=Next[i])
			if(!t[Son[i]])
			{
				tail++;
				cout<<Son[i]<<' ';
				q[tail]=Son[i];
				t[Son[i]]=1;
			}
		head++;
	}
}
bool cmp(XX x,XX y){return x.u==y.u?x.v>y.v:x.u<y.u;}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)cin>>a[i].u>>a[i].v;
	sort(a+1,a+m+1,cmp);
	for(int i=1;i<=m;i++)add(a[i].u,a[i].v);
	dfs(1);
	cout<<'\n';
	memset(t,0,sizeof(t));
	bfs(1);
}

2023/1/13 12:47
加载中...