20pts MLE!!!
查看原帖
20pts MLE!!!
810354
liuye20100123楼主2024/6/29 19:33
#include<bits/stdc++.h>
using namespace std;
int n,m,to[1000005],nxt[1000005],h[100005],cnt,d[1000005],head,tail=1;
bool bj[100005][2];
struct node{
	int x,y;
}s[1000005];
void add(int a,int b)
{
	to[++cnt]=b;
	nxt[cnt]=h[a];
	h[a]=cnt;
}
void dfs(int u)
{
	if(!bj[u][0])
	{
		printf("%d ",u);
		bj[u][0]=1;
		
	}
	for(int j=h[u];j;j=nxt[j])
	{
		dfs(to[j]);
	}
}
void bfs(int u)
{
	bj[u][1]=1;
	d[1]=u;
	printf("%d ",u);
	while(head<tail)
	{
		head++;
		int x=d[head];
		for(int j=h[x];j;j=nxt[j])
		{
			int v=to[j];
			if(!bj[v][1])
			{
				tail++;
				bj[v][1]=1;
				d[tail]=v;
				printf("%d ",v);
			 } 
		}
	}
}
int cmp(node a,node b)
{
	if(a.x!=b.x) return a.x<b.x;
	return a.y>b.y;
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d",&s[i].x,&s[i].y);
		
	}
	sort(s+1,s+m+1,cmp);
	for(int i=1;i<=m;i++)
	{
		add(s[i].x,s[i].y);
	}
	dfs(1);
	printf("\n");
	bfs(1);
	return 0;
 } 

为什么后四个点MLE

2024/6/29 19:33
加载中...