关注
#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
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客吐槽大会 #
25611次浏览 324人参与
# 工作前VS工作后,你的心态变化 #
38520次浏览 267人参与
# 秋招想进国企该如何准备 #
125454次浏览 617人参与
# 你的mentor是什么样的人? #
51603次浏览 741人参与
# 从mentor身上学到了__ #
55627次浏览 886人参与
# 我和mentor的爱恨情仇 #
106706次浏览 969人参与
# 我的省钱小妙招 #
37600次浏览 446人参与
# 机械人避雷的岗位/公司 #
44873次浏览 320人参与
# 在大厂上班是一种什么样的体验 #
15248次浏览 224人参与
# 为了减少AI幻觉,你注入过哪些设定? #
7656次浏览 216人参与
# 职场上哪些行为很加分? #
323180次浏览 3619人参与
# 通信/硬件求职避坑tips #
139985次浏览 1087人参与
# 论秋招对个人心气的改变 #
16224次浏览 251人参与
# 你觉得mentor喜欢什么样的实习生 #
48763次浏览 1002人参与
# 你现在会用到哪些AI技能? #
24843次浏览 137人参与
# 牛客AI体验站 #
9438次浏览 230人参与
# 毕业论文进行时 #
27699次浏览 153人参与
# 运营来爆料 #
77452次浏览 467人参与
# 程序员找工作至少要刷多少题? #
24347次浏览 315人参与
# 过年最难忘的一件事 #
23336次浏览 179人参与