求助,MLE
查看原帖
求助,MLE
385817
QianK楼主2021/9/26 22:13

rt

#include <cstdio>
#include <vector>
#include <cstring>
#include <algorithm>
#include <queue>
const int maxn = 100001;
using namespace std;
int n,m,u,v;
vector <int> val[maxn];
bool vis[maxn],vis2[maxn];
inline void dfs(int x)
{
	if(!vis[x])
	{
		vis[x]=1;
		printf("%d ",x);
	}
	for(int i=0;i<val[x].size();i++)
	{
		dfs(val[x][i]);
	}
}
inline void bfs(int x)
{
	queue <int > q;
	q.push(x);
	while(!q.empty() )
	{
		int xx=q.front();
		q.pop();
		for(int i=0;i<val[xx].size();i++)
		{
			if(!vis[val[xx][i]])
			{
				vis[val[xx][i]]=1;
				printf("%d ",val[xx][i]);
				q.push(val[xx][i]); 
			}
		}	
	} 
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d",&u,&v);
		val[u].push_back(v); 
	}
	for(int i=1;i<=n;i++) sort(val[i].begin() ,val[i].end() );
	dfs(1);
	printf("\n");
	printf("1 ");
	memset(vis,0,sizeof(vis));
	memset(vis2,0,sizeof(vis2));
	bfs(1);
	return 0;
}
2021/9/26 22:13
加载中...