80分求救!!!
查看原帖
80分求救!!!
1099803
Yuantianyou楼主2025/7/25 17:08

80分求调!!!

80分求调!!!

80分求调!!!

感谢大佬!!!

#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue> 
#include<vector>
using namespace std;
int n,m;
bool vis[100005];
vector<int> a[100005];
bool cmp(int a,int b){
	return a < b;
}
void dfs(int u){
	cout << u << ' ';
	for(int i = 0;i < a[u].size();++i){
		if(!vis[a[u][i]]){
			vis[a[u][i]] = 1;
			dfs(a[u][i]);
		}
	}
}

void bfs(int u){
queue<int> q;
	q.push(u);
	while(!q.empty()){
		int v = q.front();
		q.pop();
		cout << v << ' ';
		for(int i = 0;i < a[v].size();i++){
			if(!vis[a[v][i]]){
				vis[a[v][i]] = 1;
				q.push(a[v][i]);
			}
		}
	}
}
int main(){
	cin >> n >> m;
	for(int i = 1;i <= m;i++){
		int u,v;
		cin >> u >> v;
		a[u].push_back(v);
	}
	for(int i = 1;i <= n;i++) sort(a[i].begin(),a[i].end(),cmp);
	for(int i = 1;i <= n;i++){
		if(!vis[i]){
			vis[i] = 1;
			dfs(i);
		}
	}
	cout << endl;
	memset(vis,0,sizeof(vis));
	for(int i = 1;i <= n;i++){
		if(!vis[i]){
			vis[i] = 1;
			bfs(i);
		}
	}
	return 0;
}
2025/7/25 17:08
加载中...