浙江大学计算机与软件学院2019年保研上机模拟练习7-4 Index of Popularity (30分)

   日期:2020-09-20     浏览:115    评论:0    
核心提示:前言参考题解//// Created by niko on 2020/9/19.////剩余时间:19:44#include <bits/stdc++.h>using namespace std;vector<pair<int,int>>

前言


参考题解

//
// Created by niko on 2020/9/19.
//
//剩余时间:19:44

#include <bits/stdc++.h>

using namespace std;

vector<pair<int,int>> edge;//存储每条边
unordered_map<int,int> degree;//子图中每个结点的度数
//排序规则
bool cmp(int a,int b){ 
    if(degree[a]!=degree[b])return degree[a]>degree[b];
    return a<b;
}
int main(){ 
    //加速cin
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n,m,k,a,b;
    cin>>n>>m;
    while (m--){ 
        cin>>a>>b;
        edge.push_back({ a,b});
    }
    while (cin>>k&&k!=0){ 
        degree.clear();
        vector<int> v(k);//存储子图中每个结点
        unordered_map<int,bool> exist;//是否存在
        for(int i=0;i<k;i++){ 
            cin>>v[i];
            exist[v[i]]= true;
        }
        //核心,遍历每条边,若子图中存在该边,则两端的结点的度都加1
        for(auto it:edge){ 
            if(exist[it.first]&&exist[it.second]){ 
                degree[it.first]++;
                degree[it.second]++;
            }
        }
        sort(v.begin(),v.end(),cmp);
        printf("%d %d %d\n",v[0],v[1],v[2]);
    }

    return 0;
}
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服