求助,后四点WA,awsl
查看原帖
求助,后四点WA,awsl
233815
zhjzhmh楼主2021/4/5 16:20
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,b[100010],c[100010],b1[100010];
vector<int> a[100010];
void qsort(int k,int l,int r)
{
	if(l>=r) return;
	int i=l,j=r,mid=a[k][(l+r)/2];
	while(i<=j)
	{
		while(a[k][i]<mid) i++;
		while(mid<a[k][j]) j--;
		if(i<=j)
		{
			swap(a[k][i],a[k][j]);
			i++;j--;
		}
	}
	if(l<j) qsort(k,l,j);
	if(i<r) qsort(k,i,r);
}
void dfs(int k)
{
	printf("%d ",k);
	if(a[k].size()==0) return;
	for(int i=0;i<=a[k].size()-1;i++) if(!b[a[k][i]]) b[a[k][i]]=1,dfs(a[k][i]);
} 
void bfs(int k)
{
	int h=0,t=1;c[1]=k;
	while(h<t)
	{
		h++;
		printf("%d ",c[h]);
		if(a[c[h]].size()==0) continue;
		for(int i=0;i<=a[c[h]].size()-1;i++)
		{
			if(!b1[a[c[h]][i]])
			{
				t++;
				c[t]=a[c[h]][i];
				b1[a[c[h]][i]]=1;
			}
		}
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d",&x,&y);
		a[x].push_back(y);
	}
	for(int i=1;i<=n;i++) qsort(i,0,a[i].size()-1);
	b[1]=1;
	dfs(1);
	cout<<endl;
	b1[1]=1;
	bfs(1);
}
2021/4/5 16:20
加载中...