蒟蒻求助
查看原帖
蒟蒻求助
497332
利姆露·三上悟楼主2022/2/9 10:16
#include<bits/stdc++.h>
using namespace std;
int head[1000000];
struct number
{
	int start,ver,next;
	//起点,终点,下一条边。 
}n[1000000];
int v[1000000],tot;
void add(int x,int y)
{
    n[++tot].ver=y,n[tot].start=x;
    n[tot].next=head[x],head[x]=tot;
    //加入边; 
}
void dfs(int x)
{
	cout<<x<<" ";//输出当前读到的数 
	v[x]=1;//标记 
	for(int i=head[x];i;i=n[i].next)
	{
		int y=n[i].ver;
		if(v[y])continue;
		dfs(y);
	}
}//深搜 
void bfs()
{
    memset(v,0,sizeof(v));
    queue<int> q;
    q.push(1);
    v[1]=1;
    while(q.size()>0)
	{
        int x=q.front();
        q.pop();
        for(int i=head[x];i;i=n[i].next)
		{
            int y=n[i].ver;
            if(v[y]) continue;
            v[y]=v[x]+1;
            q.push(i);
        }
    }
}//上好的板子。 
bool cmp(number x,number y)
{
	if(x.start==y.start)
	return x.ver>y.ver;
	else return x.start<y.start;
}//快排qwq。 
int main()
{
	int nz,m;
	cin>>nz>>m;
	for(int i=0;i<m;i++)
	{
		int xx,yy;
		cin>>xx>>yy;//读入边 
		add(xx,yy);//加入边 
	}
	sort(n,n+m,cmp);//快排; 
	dfs(1);//从一开始深搜
	cout<<endl;
   bfs();
}

输出都不全QWQ

2022/2/9 10:16
加载中...