蒟蒻求助
  • 板块题目总版
  • 楼主sutiancheng
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/17 17:51
  • 上次更新2024/5/17 20:39:17
查看原帖
蒟蒻求助
1087520
sutiancheng楼主2024/5/17 17:51

P5813

蒟蒻代码:

#include<algorithm>
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
int n,m,in1,in2;
bool b[100005],b1[100005];
struct node{int v,u;};
struct spot
{
	int x,t;
	bool operator<(const spot &a)const{return t>a.t;};
};
bool cmp(node x,node y)
{
	if(x.v!=y.v)return x.v<y.v;
	return x.u<y.u;
}
vector<int>a[100005];
vector<node>s;
priority_queue<spot>q;
void dfs(int x)
{
	b[x]=1;
	cout<<x<<" ";
	for(int i=0;i<a[x].size();i++)if(!b[a[x][i]])dfs(a[x][i]);
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>in1>>in2;
		s.push_back(node{in1,in2});
	}
	sort(s.begin(),s.end(),cmp);
	for(int i=0;i<m;i++)a[s[i].v].push_back(s[i].u);
	dfs(1);
	cout<<endl;
	q.push(spot{1,0});
	b1[1]=1;
	while(!q.empty())
	{
		int x=q.top().x,t=q.top().t+1;
		q.pop();
		cout<<x<<" ";
		for(int i=0;i<a[x].size();i++)if(!b1[a[x][i]])
		{
			q.push(spot{a[x][i],t});
			b1[a[x][i]]=1;
		}
	}
	return 0;
}

dfs都是对的,只有bfs出了问题

2024/5/17 17:51
加载中...