HDU-5876 Sparse Graph
题目大意:
给你一个完全图让你删除给出的这些边形成新的图,问你在新的图上的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相关推荐
- HDU - 5876 Sparse Graph 2016 ACM/ICPC 大连网络赛 I题 bfs+set+补图最短路
题目链接 题意:给的补图,让你求一个源点到其他点的最短距离,因为图太稠密了, 用dij以及spfa根本不得行,这里只能用一种我不会方法来进行,这里用了bfs的方法以及set来维护,分别set维护一个未 ...
- HDU - 5876 Sparse Graph(bfs+set)
题目链接:点击查看 题目大意:给定一个无向图G,规定H为G的补图,求在H上关于点s的单源最短路 题目分析:因为H是G的补图,所以可以用整个图减去G得到H,然后对H跑一边迪杰斯特拉,可是整个图最多能达到 ...
- HDU 5876 关于补图的bfs
1.HDU 5876 Sparse Graph 2.总结:好题,把STL都过了一遍 题意:n个点组成的完全图,删去m条边,求点s到其余n-1个点的最短距离. 思路:把点分为两个集合,A为所有没有到达 ...
- 论文翻译 SGCN:Sparse Graph Convolution Network for Pedestrian Trajectory Prediction 用于行人轨迹预测的稀疏图卷积网络
SGCN:Sparse Graph Convolution Network for Pedestrian Trajectory Prediction 用于行人轨迹预测的稀疏图卷积网络 行人轨迹预测是自 ...
- 【HDU - 5876】Sparse Graph(补图bfs,STLset)
题干: In graph theory, the complementcomplement of a graph GG is a graph HH on the same vertices such ...
- HDU 4647 Another Graph Game
题意:给定n个节点和m条连线,每个节点和每条连线都有一定的权值,如果有一个人取得了一条连线的两个节点,则他获得这条连线的权值,问按照最优策略,两个人的差是多少 解题思路:把桥的权值分到两个节点上去,对 ...
- poj迷宫游戏c语言代码,ACM/ICPC 之 BFS-简单障碍迷宫问题(POJ2935)
题目确实简单,思路很容易出来,难点在于障碍的记录,是BFS迷宫问题中很经典的题目了. POJ2935-Basic Wall Maze 题意:6*6棋盘,有三堵墙,求从给定初始点到给定终点的最短路,输出 ...
- Paper:《Graph Neural Networks: A Review of Methods and Applications》翻译与解读
Paper:<Graph Neural Networks: A Review of Methods and Applications>翻译与解读 目录 <Graph Neural N ...
- 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](3)
[论文阅读]A Gentle Introduction to Graph Neural Networks [图神经网络入门](3) What types of problems have graph ...
最新文章
- Y君:天天增删改查,又能怎么样?
- 创建支持ssh的docker镜像
- Python之pandas:pandas.set_option函数的参数详细解释
- 改变进程的优先级,nice,getpriority,setpriority
- 基于ZooKeeper实现分布式锁
- ASP.NET Core(十)Configuration 配置优先级详解
- golang 日志分析_Saferwall:下一代开源恶意软件分析平台
- spring 14-Spring框架JDBC操作
- 若依框架修改器的使用教程
- java正则和python正则差距,在C/Java中处理正则表达式比在Python中快多少?
- qmail 发邮件故障
- 远程桌面与本计算机共享文件,win7系统开启远程桌面共享文件的方法
- .rgb格式文件的Python读取、格式转换
- Editext编辑属性
- 2019年西安市民办小升初西工大附中分校面谈录取学生名单
- Warshall‘s algorithm 算法的实现及优化
- TP、FN、TN、TP详解
- 3.★Deepin Linux 下火狐firefox浏览器安装★
- 将 MobaXterm 的高亮/突出显示集功能(HighLight sets)移植到 Xshell6 中使用
- 无线通信基础知识7:射频器件的基本参数3