题目链接:点击查看

题目大意:给定一个无向图G,规定H为G的补图,求在H上关于点s的单源最短路

题目分析:因为H是G的补图,所以可以用整个图减去G得到H,然后对H跑一边迪杰斯特拉,可是整个图最多能达到4e10,存都存不开,就别说别的了。正难则反,我们可以考虑用bfs正向去求,遍历到任意一个点时,我们可以枚举在G图中出现的边,并用总边删除(这里的总边指的是当前顶点和其余n-1个点的n-1条边),这样删除完后剩余的边就是H中存在的边了,对于这些边,我们可以记录距离等于父节点+1,同时压到队列中再进行下一轮的bfs,这样以每个顶点为单位的遍历,时间复杂度是n,因为一共就n个点嘛,所以边在多也不怕了,对了,这里对于边所进行的删除操作,用的是stl中的set类,因为set用的是红黑树的平衡二叉树,所以查询和删除的速度都很快,在网上看到有的大佬用vector实现删除和查询都TLE了,这个题目也没更多的细节了,一遍bfs就出答案了,具体的看代码吧:

#include<iostream>
#include<string>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<cstdio>
#include<set>
#include<queue>
using namespace std;
typedef long long LL;const int inf=0x3f3f3f3f; const int N=2e5+100;vector<int>node[N];int n,m;int d[N];void bfs(int s)
{set<int>a,b;//a用来记录可以更新哪些点,b是a的补集,用来记录还需要更新哪些点queue<int>q;for(int i=1;i<=n;i++){d[i]=-1;//所有点(s点除外)初始化为-1if(i!=s)b.insert(i);//所有点(s点除外)一开始都需要更新距离,所以都insert到b中}d[s]=0;//起点为0q.push(s);while(!q.empty()){a.swap(b);//每次都先将a(可以更新哪些点)初始化为b(还需要更新的顶点)b.clear();int u=q.front();q.pop();for(int i=0;i<node[u].size();i++){int v=node[u][i];if(a.count(v))//如果G图中有u->v这条边,那么就说明在H图中当前节点到不了V点,故从a中删除,因为该节点还没有更新过便被删除了,故加入到b中供后续处理{a.erase(v);b.insert(v);}}for(set<int>::iterator it=a.begin();it!=a.end();it++)//遍历完G图中和顶点u有关系的点后,处理在H图中u点可以到达的所有点,更新距离并加入到队列中进行后续bfs{d[*it]=d[u]+1;q.push(*it);}}
}int main()
{int w;cin>>w;while(w--){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)node[i].clear();for(int i=1;i<=m;i++){int x,y;scanf("%d%d",&x,&y);node[x].push_back(y);node[y].push_back(x);}int s;scanf("%d",&s);bfs(s);bool first=true;for(int i=1;i<=n;i++){if(i!=s){if(first)first=false;elseprintf(" ");printf("%d",d[i]);}}printf("\n");}return 0;
}

HDU - 5876 Sparse Graph(bfs+set)相关推荐

  1. HDU - 5876 Sparse Graph 2016 ACM/ICPC 大连网络赛 I题 bfs+set+补图最短路

    题目链接 题意:给的补图,让你求一个源点到其他点的最短距离,因为图太稠密了, 用dij以及spfa根本不得行,这里只能用一种我不会方法来进行,这里用了bfs的方法以及set来维护,分别set维护一个未 ...

  2. HDU 5876 关于补图的bfs

    1.HDU 5876  Sparse Graph 2.总结:好题,把STL都过了一遍 题意:n个点组成的完全图,删去m条边,求点s到其余n-1个点的最短距离. 思路:把点分为两个集合,A为所有没有到达 ...

  3. 论文翻译 SGCN:Sparse Graph Convolution Network for Pedestrian Trajectory Prediction 用于行人轨迹预测的稀疏图卷积网络

    SGCN:Sparse Graph Convolution Network for Pedestrian Trajectory Prediction 用于行人轨迹预测的稀疏图卷积网络 行人轨迹预测是自 ...

  4. HDU - 1495 非常可乐(BFS,数学)

    HDU - 1495 非常可乐(BFS,数学) 巨佬的数学解法 #include<iostream> using namespace std; int gcd(int a,int b) { ...

  5. 【HDU - 5876】Sparse Graph(补图bfs,STLset)

    题干: In graph theory, the complementcomplement of a graph GG is a graph HH on the same vertices such ...

  6. 【LeetCode从零单排】No133. clon graph (BFS广度优先搜索)

    背景 (以下背景资料转载自:http://www.cnblogs.com/springfor/p/3874591.html?utm_source=tuicool) DFS(Dpeth-first Se ...

  7. HDU 2653 (记忆化BFS搜索+优先队列)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2653 题目大意:迷宫中有普通点和陷阱.其中普通点可以走可以飞,但是陷阱只能飞.走耗时1,飞耗时2.但 ...

  8. HDU 4856 Tunnels(BFS+状压DP)

    HDU 4856 Tunnels 题目链接 题意:给定一些管道.然后管道之间走是不用时间的,陆地上有障碍.陆地上走一步花费时间1,求遍历全部管道须要的最短时间.每一个管道仅仅能走一次 思路:先BFS预 ...

  9. HDU 2102 题解(BFS 广度优先搜索 练习题)

    原题链接,但是HDU现在校外提交需要审核 欢迎来 SCPC OJ提交 知识点 : BFS(广搜/宽搜) 原题: 描述: 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生 ...

最新文章

  1. python算法与数据结构-选择排序算法(33)
  2. java 国家名称排序,我有一个国家名单。我想按字母顺序对它进行排序,除了两个我想放在第一位的国家...
  3. php 面向对象问题,PHP 面向对象开发的一些问题
  4. 第二:python安装校验报错api-ms-win-crt-process-l1-1-0.dll 丢失的处理
  5. 重学前端学习笔记(十三)--浏览器工作解析(三)
  6. ssas 面试题_多维模型的SSAS面试问题
  7. 学子商城项目1(项目 第十六阶段)
  8. python视频车流量计数_【使用攻略】【图像识别】车流量统计(动态版)
  9. oracle常用高级函数,oracle常用函数详解(详细)
  10. java 毕向东 内部类_毕向东视频学习笔记【Java_Day10 多态+内部类】
  11. 【Java】QuickHit游戏
  12. 网页设计与制作期末大作业报告——动画家宫崎骏
  13. bzoj4556(sam)
  14. python入门到精通 _6文件读写
  15. 原生js实现 转义还原HTML
  16. 2020年有寓意的领证日期_2020年领证的好日子-2020有寓意的领证日期【蜜匠婚礼】...
  17. C语言中的if、else if 的用法和区别
  18. 最全面免费下载的Altium designer 3D元件封装库模型效果图库,可以直接在工程中应用
  19. Uncaught (in promise) thirdScriptError {errMsg:hideLoading:fail:toast can't be found}
  20. RDP报表工具v2.3.*版本升级操作步骤

热门文章

  1. Nginx代理概述及环境准备
  2. Nginx全局块的工作进程的两个指令
  3. 并发的发展历史-真空管和穿孔打卡
  4. 下一代微服务(service Mesh)
  5. base64补等号规则说明
  6. spring boot 会默认加载DataSourceAutoConfiguration这个类
  7. 什么是RESTful
  8. Spring Boot整合Spring Data Redis-提取Redis的链接参数
  9. Zookeeper_原生API操作(一)
  10. 侍魂胧月传说显示服务器未开启,侍魂胧月传说为什么进不去 侍魂胧月传说进不去的原因...