题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=6011

题意


有n个人m个关系,每一对关系代表这两人认识,关系不具有传递性,现在你要安排这n个人进入一个舞会,如果第i个人进入了舞会大厅但是发现没有一个认识的人,那就会不高兴。问你怎么安排顺序这n个人进入舞会大厅,使得不开心的人数最少。如果有多种方案,输出字典序最小的方案。

解题思路


首先每一个连通块肯定有一个人是不开心的,并且可以做到只有一个人是不开心的,所以有多少连通块,就有多少人不开心。对于字典序,只需要搞个优先队列遍历就可以了。然后因为有多个连通块,肯定不能一个块一个块的遍历,所以需要弄一个超级源点连到所有的起点上,然后再遍历,注意连到每个联通块的起点,这个起点需要是整个块的最小值,这样肯定使得结果最优。而让块的祖先节点是最小值,这一点可以用并查集稍作修改实现。
(以上文字来源:https://blog.csdn.net/qq_41289920/article/details/89605547 )

注意:可能会出现 (1,2) (2,1) 这种情况,那么1的朋友(vector存)里面会有两个2,优先队列bfs遍历的时候要避免重复遍历2的朋友们,否则在报wa之前会内存超限!!(终于找到原因了(;´༎ຶД༎ຶ`))

ac代码


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define maxn 1000005
using namespace std;
int f[maxn],n,m,x,y;
int ans[maxn],num,vis[maxn];
vector<int> fr[maxn];
int findf(int x) {return f[x] == x ? x : f[x] = findf(f[x]);
}
void bfs(int x) {priority_queue<int,vector<int>,greater<int> > q;q.push(x);while(!q.empty()) {int k = q.top();q.pop();if(vis[k] == 1) continue;vis[k] = 1;ans[num++] = k;int up = fr[k].size();for(int i = 0; i<up; i++) {int v = fr[k][i];if(!vis[v])q.push(v);}}
}
int main()
{int t;cin>>t;while(t--) {num=0;scanf("%d%d",&n,&m);for(int i = 0; i<=n; i++) f[i] = i,fr[i].clear(),vis[i]=0;for(int i = 1; i<=m; i++) {scanf("%d%d",&x,&y);fr[x].push_back(y);fr[y].push_back(x);int fx = findf(x);int fy = findf(y);if(fx>fy) f[fx] = fy;else f[fy]=fx;}int ans1 = 0;for(int i = 1; i<=n; i++) {if(f[i] == i) fr[0].push_back(i),ans1++;}bfs(0);printf("%d\n",ans1);for(int i = 1; i<num; i++) {if(i!=1) printf(" ");printf("%d",ans[i]);}printf("\n");}return 0 ;
}

【浙江省第16届省赛J:】Welcome Party(并查集+优先队列bfs遍历)相关推荐

  1. 【2019浙江省赛 - J】Welcome Party(并查集,bfs,优先队列,建图)

    题干: The 44th World Finals of the International Collegiate Programming Contest (ICPC 2020) will be he ...

  2. HDU 新生赛 油菜花王国(并查集)

    油菜花王国 Problem Description 程序设计竞赛即将到来,作为学校ACM集训队主力,小明训练一直很努力.今天天气不错,教练也心情大好,破例给各位队员放假一天,小明就骑着自己的小电驴到郊 ...

  3. 2021中国大学生程序设计竞赛(CCPC)- 网络选拔赛(重赛) Jumping Monkey(并查集,逆向考虑)

    LINK 考虑权值最大的节点为 z z z,那么其他所有点最后都是跳到这个点,且不能越过这个点到其他点 那么其实我们可以把所有其他节点的答案都加 1 1 1,相当于把 z z z删掉,分成若干个连通块 ...

  4. Central Europe Regional Contest 2019 J. Saba1000kg (并查集+根号讨论)

    链接:https://ac.nowcoder.com/acm/contest/7817/I 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524 ...

  5. 【ZJCPC2019 第16届 浙江省赛】The 16th Zhejiang Provincial Collegiate Programming Contest(GFHIJ 5题)

    补题地址:https://zoj.pintia.cn/home/news 搜索16th 本文按照通过率补的题 G .Lucky 7 in the Pocket 题意:给出T个数,对于每个数,找出一个能 ...

  6. 记2020年(第16届)湖南ACM省赛

    记2020年(第16届)湖南ACM省赛 写在前面 我很喜欢<龙族>里那个叫路明非的衰小孩.虽然我也不知道为什么要说这个,逃 这个世界有多大,取决于你认识的人,你每认识一个人,世界对你来说就 ...

  7. 必看!嘉宾寄语 × 赛制 Q&A:2023年(第16届)中国大学生计算机设计大赛大数据主题赛 - 和鲸赛道 正式开赛

    导语:中国大学生计算机设计大赛 - 大数据应用大类 - 大数据主题赛 - 和鲸赛道已于 1 月 28 日正式开赛,作为协办方,和鲸特别邀请到了大赛组委会常务副主任杜小勇教授为广大参赛选手寄语,此外,我 ...

  8. 刘鹏教授担任第46届世赛浙江省选拔赛云计算项目裁判长

    7月28日,第46届世界技能大赛浙江省选拔赛云计算项目在台州技术学院(筹)举办,来自省内11所院校的11名选手参加了比赛.本次比赛由浙江省人力资源和社会保障厅主办,台州市人力资源和社会保障局协办,台州 ...

  9. 第六届省赛(软件类)真题----Java大学A组答案及解析

    第六届省赛(软件类)真题----Java大学A组答案及解析 熊怪吃核桃 星系炸弹 九数分三组 循环节长度 打印菱形 加法变乘法 牌型种数 移动距离 垒骰子 灾后重建 一.熊怪吃核桃 森林里有一只熊怪, ...

  10. 第六届省赛(软件类)真题----Java大学B组答案及解析

    第六届省赛(软件类)真题----Java大学B组答案及解析 三角形面积 立方变自身 三羊献瑞 循环节长度 九数组分数 加法变乘法 牌型种数 饮料换购 垒骰子 生命之树 一.三角形面积 如[图1]所示. ...

最新文章

  1. php中去空函数trim,PHP中trim()函数简单使用指南
  2. Go http源码解析(一)
  3. 爆料!亦庄地区数据中心将面临史上最长群体”限电“
  4. Linux/Unix the definition of cpu-nice
  5. IIS 8.5配置.net网站[花了半个多小时]
  6. Paxos第三篇 - Paxos成员组变更
  7. java 发送邮件添加附件_java邮件自动发送时添加网络附件
  8. 《Linux 就是这个范儿 - 阅读笔记2》 融于心而表于行(1)
  9. 自动建议下拉菜单_word排版技巧:如何撤销删除自动编号
  10. 【渝粤教育】国家开放大学2018年秋季 0579-22T电路及磁路(2)(一) 参考试题
  11. 用计算机上发微博,电脑版新浪微博怎么使用?新浪微博基本使用方法介绍
  12. 2017大学网考计算机b,(热)2017年4月网考 大学英语b网考 电大英语网考 计算机应用.doc...
  13. myeclipse复制的文件代码乱码
  14. C#开发ActiveX控件
  15. CMYK配色表和RGB配色表
  16. 历久而新,我的新书《第二行代码》已出版!
  17. shell 输出7的倍数
  18. 使用CXF遇到的错误
  19. 服务器异常网站被百度转码,使用百度云加速后网站访问出现416错误
  20. 体育馆场地预约管理系统/球馆管理系统

热门文章

  1. SQLite异常:unsafenativemethods.sqlite3_open_interop
  2. 【Java企业级开发二】jsp简答题汇总
  3. fastdfs返回的url_FastDFS上传文件Demospringboot实现
  4. js实现kmp算法_数据结构作业之完整KMP算法实现通讯录
  5. 使用二分查询数组中的某一个元素,简单示例,详细注解
  6. 什么是python自动化测试_python自动化测试学习笔记-1
  7. html框架设计左侧嵌套,html页面嵌套使用示例(frameset使用方法)
  8. Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
  9. 文件系统管理 之 Fedora Core 4.0 HAL配置即插即用移动存储(USB及1394)的实践
  10. 字符数组的ss.toString()和new String(ss)的问题