TLE20分求助
查看原帖
TLE20分求助
464117
糖果小屋楼主2022/7/12 21:26
#include<bits/stdc++.h>
#define MAXN 100005
using namespace std;
int n,m;
vector <int> p[MAXN];
queue <int> q;
bool u[MAXN];
void solve(int x){
	cout<<x<<' ';
	for(int i=0,sz=p[x].size();i<sz;i++){
		if(!u[p[x][i]]){
			u[p[x][i]] = true;
			solve(p[x][i]);
		}
	}
}
int main(){
	cin>>n>>m;
	int x[m+1];
	int y[m+1];
	for(int i=1;i<=m;i++){
		cin>>x[i]>>y[i];
	}
	for(int i=1;i<=m;i++){
		for(int j=1;j<=m-i-1;j++){
			if(y[j]>y[j+1]){
				int tx,ty;
				tx = x[j];
				ty = y[j];
				x[j] = x[j+1];
				y[j] = y[j+1];
				x[j+1] = tx;
				y[j+1] = ty;
			}
		}
	}
	for(int i=1;i<=m;i++){
		p[x[i]].push_back(y[i]);
	}
	u[1] = true;
	solve(1);
	cout<<endl;
	bool u[MAXN];
	q.push(1);
	while(!q.empty()){
		int k = q.front();
		q.pop();
		cout<<k<<' ';
		for(int i=0,sz=p[k].size();i<sz;i++){
			if(!u[p[k][i]]){
				u[p[k][i]] = true;
				q.push(p[k][i]);
			}
		}
	}
	return 0;
}
2022/7/12 21:26
加载中...