WWF_666 2021-08-10 23:33 采纳率: 33.3%
浏览 33

这样的vector排序为什么会错误?

img

img


#include<bits/stdc++.h>
#include<vector>
#include<queue>
using namespace std;
int n,m;
vector <int> r[100010];
bool vis[100010];
queue <int> q;
bool cmp(vector<int> &a,vector<int> &b){
    if(a[0]!=b[0]) return a[0]<b[0];
    else return a[1]>b[1];
}
void dfs(int x){
    cout<<x<<" ";
    for(int i=0;i<r[x].size();i++){
        if(!vis[r[x][i]]){
            vis[r[x][i]]=1;
            dfs(r[x][i]);
        }
    }
}
void bfs(int x){
    q.push(x);
    while(!q.empty()){
        int x=q.front();
        q.pop();
        cout<<x<<" ";
        for(int i=0;i<r[x].size();i++){
            if(!vis[r[x][i]]){
                vis[r[x][i]]=1;
                q.push(r[x][i]);
            }
        }
    }
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        int x,y;
        cin>>x>>y;
        r[x].push_back(y);
    } 
    sort(r.begin(),r.end(),cmp);
    vis[1]=1;
    dfs(1);
    cout<<endl;
    memset(vis,0,sizeof(vis));
    vis[1]=1;
    bfs(1);
    return 0;
}
  • 写回答

2条回答 默认 最新

  • wingaso 2021-08-11 00:09
    关注
    
    #include<bits/stdc++.h>
    using namespace std;
    int n,m;
    vector <int> r[100010];
    bool vis[100010];
    queue <int> q;
    bool cmp(vector<int> &a,vector<int> &b){
        if(a[0]!=b[0]) return a[0]<b[0];
        else return a[1]>b[1];
    }
    void dfs(int x){
        cout<<x<<" ";
        for(int i=0;i<r[x].size();i++){
            if(!vis[r[x][i]]){
                vis[r[x][i]]=1;
                dfs(r[x][i]);
            }
        }
    }
    void bfs(int x){
        q.push(x);
        while(!q.empty()){
            int x=q.front();
            q.pop();
            cout<<x<<" ";
            for(int i=0;i<r[x].size();i++){
                if(!vis[r[x][i]]){
                    vis[r[x][i]]=1;
                    q.push(r[x][i]);
                }
            }
        }
    }
    int main(){
        cin>>n>>m;
        for(int i=1;i<=m;i++){
            int x,y;
            cin>>x>>y;
            r[x].push_back(y);
        } 
        sort(r+1,r+n+1,cmp);
        vis[1]=1;
        dfs(1);
        cout<<endl;
        memset(vis,0,sizeof(vis));
        vis[1]=1;
        bfs(1);
        return 0;
    }
    

    我给你改好了。
    你看看能不能用。
    因为没有看到你的题目,不确定是不是这个区间。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月10日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表