不知道错哪里了,后四个测试点全WA了
查看原帖
不知道错哪里了,后四个测试点全WA了
867819
Javie楼主2023/8/5 15:46
#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e6+100;
int n,m,a,b;
int h[MAXN],e[MAXN],ne[MAXN],idx;
bool st[MAXN];
struct niubi
{
    int u,v;
}ch[MAXN];
bool cmp(niubi a,niubi b)
{
    if(a.u==b.u) return a.v>b.v;
    return a.u<b.u;
    
}
void add(int a,int b)
{
    e[idx]=b;
    ne[idx]=h[a];
    h[a]=idx++;
}
void dfs(int u)
{
    cout<<u<<" ";
    st[u]=true;
    for(int i=h[u];i!=-1;i=ne[i])
    {
        int j=e[i];
        if(!st[j])
        {
            dfs(j);
        }
    }
}
void bfs()
{
    queue<int>q;
    q.push(1);
    st[1]=true;
    while(q.size())
    {
        int t=q.front();
        cout<<t<<" ";
        q.pop();
        for(int i=h[t];i!=-1;i=ne[i])
        {
            int j=e[i];
            if(!st[j]) 
            {
                st[j]=true;
                q.push(j);
            }
        }
    }
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
    memset(h,-1,sizeof(h));
    
    cin>>n>>m;

    for(int i=1;i<=m;i++)
    {
        cin>>ch[i].u>>ch[i].v;
    }
    sort(ch+1,ch+1+m,cmp);
     for(int i=1;i<=m;i++)
    {
        add(ch[i].u,ch[i].v);
        add(ch[i].v,ch[i].u);
    }
    dfs(1);
    cout<<endl;
    memset(st,0,sizeof(st));
    bfs();
	return 0;
}

2023/8/5 15:46
加载中...