题目大意:

给你一个完全图让你删除给出的这些边形成新的图,问你在新的图上的s点到其它所有点的距离。

解题思路:

BFS乱搞...

补图的BFS的问题虽然很经典= =不过确实还是第一次做。很方。

用一个map来保存邻接的信息。因为最多20000,很坑的是比赛时候题面给的是5000

然后先从s来遍历所有点,如果邻接信息里面含有s到i的边,那么将i插入到set里面,并将dis[i]置为-1,如果不含有s到i的边,就将i插入队列,并将dis[i]置为1

然后依次访问队列里面的元素x,遍历set,如果set中的点y不具有一条x到y的边,那么就将这个点标记,取出set,然后更新dis[y]

当set为空的时候直接return。

其实set可以用链表代替不过用set可以偷懒...

大概思路就是这样。然后就可以解决这题了。

代码:

#include <set>
#include <map>
#include <queue>
#include <cstdio>
#include <cstring>
using namespace std;const int maxm = 40005;
const int maxn = 200005;set<int> ss;
map<int, map<int, int> > mp;
int dis[maxn];void bfs(int s, int n) {queue<int> q; ss.clear();while (!q.empty()) q.pop();for (int i = 1; i <= n; ++i) {if (i == s) continue;if (mp[s][i]) {dis[i] = -1;ss.insert(i);} else {dis[i] = 1;q.push(i);}}int cnt = ss.size();while (!q.empty()) {int x = q.front(); q.pop();for (set<int>::iterator it = ss.begin(); it != ss.end(); ++it) {int y = *it;if (dis[y] != -1 || mp[x][y]) continue;dis[y] = dis[x] + 1;q.push(y);--cnt;}if (!cnt) return;}
}
int main() {int n, m, s, u, v, t;while (~scanf("%d", &t)) {while (t--) {mp.clear();scanf("%d%d", &n, &m);while (m--) {scanf("%d%d", &u, &v);mp[u][v] = mp[v][u] = 1;}scanf("%d", &s);bfs(s, n);int cnt = 0;for (int i = 1; i <= n; ++i) {if (i == s) continue;++cnt;printf("%d%c", dis[i], (cnt == n - 1) ? '\n' : ' ');}}}return 0;
}

转载于:https://www.cnblogs.com/wiklvrain/p/8179356.html

HDU-5876 Sparse Graph相关推荐

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

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

  2. HDU - 5876 Sparse Graph(bfs+set)

    题目链接:点击查看 题目大意:给定一个无向图G,规定H为G的补图,求在H上关于点s的单源最短路 题目分析:因为H是G的补图,所以可以用整个图减去G得到H,然后对H跑一边迪杰斯特拉,可是整个图最多能达到 ...

  3. HDU 5876 关于补图的bfs

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

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

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

  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. HDU 4647 Another Graph Game

    题意:给定n个节点和m条连线,每个节点和每条连线都有一定的权值,如果有一个人取得了一条连线的两个节点,则他获得这条连线的权值,问按照最优策略,两个人的差是多少 解题思路:把桥的权值分到两个节点上去,对 ...

  7. poj迷宫游戏c语言代码,ACM/ICPC 之 BFS-简单障碍迷宫问题(POJ2935)

    题目确实简单,思路很容易出来,难点在于障碍的记录,是BFS迷宫问题中很经典的题目了. POJ2935-Basic Wall Maze 题意:6*6棋盘,有三堵墙,求从给定初始点到给定终点的最短路,输出 ...

  8. Paper:《Graph Neural Networks: A Review of Methods and Applications》翻译与解读

    Paper:<Graph Neural Networks: A Review of Methods and Applications>翻译与解读 目录 <Graph Neural N ...

  9. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](3)

    [论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](3) What types of problems have graph ...

最新文章

  1. Y君:天天增删改查,又能怎么样?
  2. 创建支持ssh的docker镜像
  3. Python之pandas:pandas.set_option函数的参数详细解释
  4. 改变进程的优先级,nice,getpriority,setpriority
  5. 基于ZooKeeper实现分布式锁
  6. ASP.NET Core(十)Configuration 配置优先级详解
  7. golang 日志分析_Saferwall:下一代开源恶意软件分析平台
  8. spring 14-Spring框架JDBC操作
  9. 若依框架修改器的使用教程
  10. java正则和python正则差距,在C/Java中处理正则表达式比在Python中快多少?
  11. qmail 发邮件故障
  12. 远程桌面与本计算机共享文件,win7系统开启远程桌面共享文件的方法
  13. .rgb格式文件的Python读取、格式转换
  14. Editext编辑属性
  15. 2019年西安市民办小升初西工大附中分校面谈录取学生名单
  16. Warshall‘s algorithm 算法的实现及优化
  17. TP、FN、TN、TP详解
  18. 3.★Deepin Linux 下火狐firefox浏览器安装★
  19. 将 MobaXterm 的高亮/突出显示集功能(HighLight sets)移植到 Xshell6 中使用
  20. 无线通信基础知识7:射频器件的基本参数3

热门文章

  1. 你在办公室遇到的最诡异的事情是什么?
  2. 有哪些相见恨晚的运动常识
  3. 实体与电商,有啥区别?
  4. 俗话说开店容易,守店难,这句话是错的,百分之一万是错的,守店怎么会难?
  5. 查理.芒格,谈投资的秘密
  6. 如果你人生的第一目标是赚钱
  7. 有哪些行业或生意是电商无法取代的?
  8. First of all, let’s talk about the richest man in Japan
  9. Navicat 12 安装
  10. TCP/IP参考模型和五层参考模型