关注
#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
相关推荐
牛客热帖
更多
正在热议
更多
# 我的求职总结 #
34006次浏览 547人参与
# 国企vs私企,怎么选? #
21240次浏览 170人参与
# 一人一个landing小技巧 #
39982次浏览 714人参与
# 怎么防止在试用期被辞退 #
118776次浏览 889人参与
# 辞职之后最想做的一件事 #
12297次浏览 175人参与
# 选offer应该考虑哪些因素 #
24139次浏览 337人参与
# 毕业季,给职场新人一些建议 #
32753次浏览 530人参与
# 硬件开发岗知多少 #
10428次浏览 111人参与
# 薪资一样,你会选择去大厂还是小公司 #
17217次浏览 105人参与
# 机械专业只有考研才有出路吗 #
102230次浏览 857人参与
# 小米硬件提前批进度交流 #
165144次浏览 1516人参与
# 字节跳动工作体验 #
394543次浏览 4315人参与
# 校招第一份工作你干了多久? #
68861次浏览 338人参与
# 为了秋招你都做了哪些准备? #
11411次浏览 173人参与
# 你想吐槽公司的哪些规定 #
18397次浏览 71人参与
# 晒一晒你收到的礼盒 #
63328次浏览 378人参与
# 机械人值得去的国央企 #
59875次浏览 406人参与
# 你见过最离谱的招聘要求是什么? #
189075次浏览 1405人参与
# bilibili求职进展汇总 #
60198次浏览 584人参与
# 我的工作日记 #
101180次浏览 1281人参与