为什么re4个呢为什么呢
查看原帖
为什么re4个呢为什么呢
1100122
yiluntaiyang楼主2024/8/3 16:23

虽然我写的烂但是范围一直改也改不过去,是这个方法不行么qaq

#include<bits/stdc++.h>
using namespace std;
long long int n,m;
long long int a[11010][19010];
long long int b[10000];
bool p[11000];
void dfs(long long int x)
{
	if(a[x][0]!=0)
	for(long long int i=1;i<=a[x][0];++i)
	{
		if(p[a[x][i]]!=1)
		{
		cout<<a[x][i]<<" ";
		p[a[x][i]]=1;
		}
	}
	for(long long int i=1;i<=a[x][0];++i)
	dfs(a[x][i]);
}
void bfs(long long int x)
{
	if(a[x][0]==0) return ;
	else
	{
		for(long long int i=1;i<=a[x][0];++i)
		{
			if(p[a[x][i]]!=1)
			{
			cout<<a[x][i]<<" ";
			p[a[x][i]]=1;
			bfs(a[x][i]);
			}
		}
	}
}
int main()
{
	long long int n,m;
	cin>>n>>m;
	for(long long int i=1;i<=m;++i)
	{
		long long int x,y;
		cin>>x>>y;
		a[x][0]++;
		a[x][a[x][0]]=y;
		
	}
	for(long long int i=1;i<=n;++i)
	{
	for(long long int j=1;j<=a[i][0];++j)
	{
		b[j]=a[i][j];	
	}
	sort(b+1,b+1+a[i][0]);
	for(long long int j=1;j<=a[i][0];++j)
	a[i][j]=b[j];
	}
	cout<<1<<" ";
	bfs(1);
	for(long long int i=1;i<=n;++i)
	p[i]=0;
	cout<<endl;
	cout<<1<<" ";
	dfs(1);
	

	return 0;
}
2024/8/3 16:23
加载中...