20求掉(T^T)
查看原帖
20求掉(T^T)
1425633
abc0209楼主2025/8/1 17:28
#include<bits/stdc++.h>
using namespace std;
int n,m,h[1000005];
int cnt;
bool b[1000005];
struct pp
{
    int nt,v;
}e[1000005],a[1000005];
void add(int u,int v)
{
    cnt++;
    e[cnt].v=v;
    e[cnt].nt=h[u];
    h[u]=cnt;
    return;
}
void dfs(int x)
{

    cout<<x<<" ";
    for(int i=h[x];i!=0;i=e[i].nt)
    {
        if(!b[e[i].v])
        {
            b[e[i].v]=1;
            dfs(e[i].v);
        }
    }
}
queue<int> q;
void bfs(int x)
{
    for(int i=1;i<=m;i++) b[i]=0;
   // memset(b,0,sizeof(b));
    b[x]=1;
    q.push(x);
    while(!q.empty())
    {
        int x=q.front();
        q.pop();
        cout<<x<<" ";
        for(int i=h[x];i!=0;i=e[i].nt)
        {
            if(!b[e[i].v])
            {
                b[e[i].v]=1;
                q.push(e[i].v);
            }
        }
    }
}
bool cmp(pp a,pp b)
{
    return a.nt>b.nt;
}

int main()
{
     cin>>n>>m;
     for(int i=1;i<=m;i++)
     {
         cin>>a[i].v>>a[i].nt;
     }
     sort(a+1,a+1+m,cmp);
     for(int i=1;i<=m;i++)
     {
         add(a[i].v,a[i].nt);
     }
     dfs(1);
     cout<<endl;
     bfs(1);
     return 0;
}
2025/8/1 17:28
加载中...