关注
#include <iostream>
#include <vector>
#include <map>
#include <queue>
#include <list>
#include <algorithm>
using namespace std;
//首先定义一个结构体 Peo: 编号 + 熟人链表 + 权值p(熟人个数)
typedef struct Peo
{
int id;
list<int> fri;
int p;
}Peo;
int main()
{
int n, m;
while (cin >> n >> m)
{
int x, y;
//存放让出去考试的学生编号,最后按从小到大打印
vector<int> result;
vector<Peo> v(2 * n + 1);
for (int i = 0; i < 2 * n + 1; ++i)
v[i].id = i;
//初始化v中所有学生的id
v[0].p = -9999;
//v[0]仅为占位方便计算,p定义成-9999不会影响排序
for (int i = 0; i < m; ++i)
{
cin >> x >> y;
//接收好友关系
//x的好友列表 + y
//y的好友列表 + x
//各自权值+1
v[x].fri.push_back(y);
v[y].fri.push_back(x);
v[x].p++;
v[y].p++;
}
sort(v.begin(), v.end(), [](const Peo&a, const Peo&b) { return a.p > b.p; });
//按权值从小到大排序
while (1)
{
if (v[0].p <= 0)
break;
//如果排序后v[0]<0则意味着所有的熟人关系均已处理掉
if (v[0].p > 0)
{
for (auto &f : v[0].fri)
{
for (auto &e : v)
{
if (e.id == f)
{
--e.p;
break;
}
}
}
v[0].p = 0;
result.push_back(v[0].id);
}
sort(v.begin(), v.end(), [](const Peo&a, const Peo&b) { return a.p > b.p; });
}
cout << result.size() << endl;
for (auto e : result)
{
cout << e << endl;
}
}
return 0;
}
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 校招生月薪1W算什么水平 #
34007次浏览 188人参与
# 哪一瞬间觉得自己长大了 #
38171次浏览 493人参与
# “vivo”个offer #
38715次浏览 280人参与
# 如果上班像打游戏,你最想解锁什么技能 #
8096次浏览 70人参与
# vivo工作体验 #
27862次浏览 124人参与
# 为了实习逃课值吗? #
28537次浏览 270人参与
# 工作后明白的那些道理 #
21669次浏览 225人参与
# 一人一个landing小技巧 #
123815次浏览 1441人参与
# 我是面试官,请用一句话让我破防 #
26516次浏览 128人参与
# 实习最想跑路的瞬间 #
87402次浏览 542人参与
# 中美关税战对我们有哪些影响 #
42918次浏览 361人参与
# 机械制造2023笔面经 #
149502次浏览 840人参与
# 如果重来一次你还会读研吗 #
201555次浏览 1932人参与
# AI时代,哪些岗位最容易被淘汰 #
3291次浏览 27人参与
# 中美关系回暖,你会选择出海吗? #
6604次浏览 107人参与
# 华为保温 #
107561次浏览 407人参与
# 哪些行业值得去? #
5302次浏览 50人参与
# i人适合做什么工作 #
11334次浏览 97人参与
# 美团开奖 #
222063次浏览 1146人参与
# 读研or工作,哪个性价比更高? #
78189次浏览 768人参与
# 如果秋招能重来,我会____ #
37324次浏览 300人参与
科大讯飞公司氛围 425人发布