20求助
查看原帖
20求助
796048
Gold_Blood楼主2023/2/17 23:09

后四个点全RE……

#include<bits/stdc++.h>
using namespace std;
int n,m;
int head[10000005],vis[10000005],cnt;
struct edge{
    int to,nxt;
}e[10000005];
struct node{
    int u,v;
}e2[10000005];
bool cmp(node a,node b){
    if(a.u==b.u){
        return a.v>b.v;
    }
};
void init(){
    memset(vis,0,sizeof(vis));
    memset(head,-1,sizeof(head));
    cnt=0;
}
void addedge(int u,int v){
    e[cnt].to=v;
    e[cnt].nxt=head[u];
    head[u]=cnt++;
}
void dfs(int u){
    cout<<u<<" ";
    vis[u]=1;
    for(int i=head[u];~i;i=e[i].nxt){
        int v=e[i].to;
        if(vis[v]==0){
            dfs(v);
        }
    }
}
queue<int>que;
void bfs(){
    que.push(1);
    vis[1]=1;
    while(!que.empty()){
        int u=que.front(); 
        que.pop();
        cout<<u<<" ";
        for(int i=head[u];~i;i=e[i].nxt){
            int v=e[i].to;
            if(vis[v]==0){
                que.push(v);
                vis[v]=1;
            }
        }
    }
}
int main(){
    init();
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        cin>>e2[i].u>>e2[i].v;
    }
    sort(e2+1,e2+1+m,cmp);
    for(int i=1;i<=m;i++){
        addedge(e2[i].u,e2[i].v);
    }
    dfs(1);
    cout<<endl;
    memset(vis,0,sizeof(vis));
    bfs();
    return 0;
}
2023/2/17 23:09
加载中...