20分求调1AC4MLE
查看原帖
20分求调1AC4MLE
482756
xianjing楼主2023/11/28 18:59

不知道为啥和题解开的变量一样多还爆了,求调,但是不要贴题解谢谢(想抄题解直接去了)

#include <bits/stdc++.h>
using namespace std;
int n,m;
vector<int>graph[100001];
int t1,t2;
bool flag1[100001],flag2[100001];
void dfs(int x){
    if(graph[x].empty() || flag1[x]){
        if(!flag1[x]){
            flag1[x] = true;
            printf("%d ", x);
        }
        return;
    }
    printf("%d ", x);
    for(int i = 0; i < graph[x].size(); i++){
        dfs(graph[x][i]);
    }
    flag1[x] = true;  // Move this statement outside the loop
    return;
}
queue<int>que;
void bfs(int x){
	if(!flag2[x]){
		printf("%d ",x);flag2[x]=true;
	}
	if(graph[x].size()==0){
		return;
	}
	que.push(x);
	while(!que.empty()){
		for(int i=0;i<graph[que.front()].size();i++){
			if(!flag2[graph[que.front()][i]]){
				printf("%d ",graph[que.front()][i]);
				que.push(graph[que.front()][i]);
				flag2[graph[que.front()][i]]=true;
			}
		}		
		que.pop();
	}
	return;
}
signed main(){
	cin>>n>>m;
	for(int i=0;i<m;i++){
		scanf("%d %d",&t1,&t2);
		graph[t1].push_back(t2);
	}
	for(int i=1;i<=n;i++){
		sort(graph[i].begin(),graph[i].end());
	}
//	for(int i=1;i<=n;i++){
		dfs(1);
//	}
	cout<<endl;
//	for(int i=1;i<=n;i++){
		bfs(1);
//	}
	return 0;
}
2023/11/28 18:59
加载中...