P5318,20分,求调
  • 板块灌水区
  • 楼主Tis员工
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/7/6 18:12
  • 上次更新2023/10/27 21:42:37
查看原帖
P5318,20分,求调
430920
Tis员工楼主2022/7/6 18:12
#include<bits/stdc++.h>
using namespace std;
inline int read(){
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
bool p[1000005];//标记是否访问过 
struct st{
	int x,y;
}a[1000005];
vector<int>e[1000005];
int n,m;
int q[1000005];
bool cmp(st x,st y){
	if(x.y<y.y)return 1;
	return 0;
}
void dfs(int s){
	cout<<s<<" ";
	for(int i=0;i<e[s].size();i++){
		if(p[e[s][i]])continue;
		p[e[s][i]]=1;dfs(e[s][i]);
	}
}
//-------------------------------------------------------------//这部分的问题 
void bfs(){
	cout<<endl;memset(p,0,sizeof(p));p[1]=-1;
	int h=0,t=1;q[1]=1;
	while(h<t){
		h++;
		for(int i=0;i<e[h].size();i++){
			if(!p[e[h][i]]){t++;q[t]=e[h][i];p[e[h][i]]=1;}
		}
	}
	for(int i=1;i<=t;i++)cout<<q[i]<<" ";
}
//--------------------------------------------------------------//这部分的问题 
int main()
{
    //freopen("word.in","r",stdin);freopen("word.out","w",stdout);
    //ios::sync_with_stdio(false);
    memset(p,0,sizeof(p));p[1]=-1;
    n=read();m=read();
    for(int i=1;i<=m;i++){a[i].x=read();a[i].y=read();}
    sort(a+1,a+1+m,cmp);
	//for(int i=1;i<=m;i++)cout<<a[i].x<<" "<<a[i].y<<endl;
	for(int i=1;i<=m;i++)e[a[i].x].push_back(a[i].y);
	dfs(1);bfs();
	return 0;
}

看过错误信息了,是bfs那部分的问题。但我看不出来。。。

2022/7/6 18:12
加载中...