HDU 5876 关于补图的bfs
1、HDU 5876 Sparse Graph
2、总结:好题,把STL都过了一遍
题意:n个点组成的完全图,删去m条边,求点s到其余n-1个点的最短距离。
思路:把点分为两个集合,A为所有没有到达过的点,B为当前不可到达的点,每次拓展A中可到过的点加入队列。
#include<iostream> #include<cstring> #include<cmath> #include<queue> #include<algorithm> #include<cstdio> #include<vector> #include<set> #define F(i,a,b) for (int i=a;i<b;i++) #define FF(i,a,b) for (int i=a;i<=b;i++) #define mes(a,b) memset(a,b,sizeof(a)) #define INF 0x3f3f3f3f #define LL long long using namespace std; const int N=200010,MAX=1000100;int n,m,dis[N]; vector<int >vec[N];void bfs(int s) {mes(dis,0);set<int >A,B;FF(i,1,n)if(i!=s)A.insert(i);queue<int >qu;qu.push(s);while(!qu.empty()){int u=qu.front();qu.pop();for(int i=0;i<vec[u].size();i++){ //注:vec从0开始int v=vec[u][i];if(A.count(v)){A.erase(v); //集合删除、插入 B.insert(v);}}for(set<int >::iterator it=A.begin();it!=A.end();it++){ //注:it!=A.end()结尾dis[*it]=dis[u]+1; //注:*itqu.push(*it);}A.swap(B); //集合交换 B.clear();} }int main() {int t;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);FF(i,0,n)vec[i].clear(); //注:vec[i].clear()while(m--){int u,v;scanf("%d%d",&u,&v);vec[u].push_back(v);vec[v].push_back(u);}int s;scanf("%d",&s);bfs(s);int flag=0;FF(i,1,n){if(i!=s){if(flag)printf(" ");else flag=1;printf("%d",dis[i]);}}printf("\n");}return 0; }
View Code
转载于:https://www.cnblogs.com/sbfhy/p/5917585.html
HDU 5876 关于补图的bfs相关推荐
- 专题训练二 搜索进阶 HDU - 3085 Nightmare Ⅱ (双向BFS + 曼哈顿距离)
HDU - 3085 Nightmare Ⅱ (双向BFS + 曼哈顿距离) Problem Description Last night, little erriyue had a horrible ...
- HDU - 5876 Sparse Graph 2016 ACM/ICPC 大连网络赛 I题 bfs+set+补图最短路
题目链接 题意:给的补图,让你求一个源点到其他点的最短距离,因为图太稠密了, 用dij以及spfa根本不得行,这里只能用一种我不会方法来进行,这里用了bfs的方法以及set来维护,分别set维护一个未 ...
- 【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 - 5876 Sparse Graph(bfs+set)
题目链接:点击查看 题目大意:给定一个无向图G,规定H为G的补图,求在H上关于点s的单源最短路 题目分析:因为H是G的补图,所以可以用整个图减去G得到H,然后对H跑一边迪杰斯特拉,可是整个图最多能达到 ...
- HDU 5836 Rubik's Cube BFS
Rubik's Cube 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5836 Description As we all know, Zhu is ...
- HDU 1043 Eight(双向BFS+康托展开)
http://acm.hdu.edu.cn/showproblem.php?pid=1043 题意:给出一个八数码,求出到达指定状态的路径. 思路:路径寻找问题.在这道题里用到的知识点挺多的.第一次用 ...
- HDU(1175),连连看,BFS
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1175 越学越不会,BFS还是很高级的. 连连看 Time Limit: 20000/100 ...
- HDU 1728 逃离迷宫(BFS的优化)
这一题,有两个地方需要注意:(除了题目令人窒息的行列的x y设置) ①转弯如何判断? 需要给转弯的方向赋值.通常,我们在节点向四个方向延伸的时候,喜欢这样 int nextx[4]={0,0,-1,1 ...
- HDU 1495 非常可乐(数论,BFS)
非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
最新文章
- C语言指针函数MFC版Demo
- 建立海盗的天堂:盗贼之海的AI(一)
- No projects are found to import
- ajax失败的原因,使用https协议失败的ajax请求失败的可能原因但http工作
- linux线程调度与rtos,实时Linux和RTOS的基本特性及技术进行比较
- span的title标签中的换行
- matlab 例题sin,matlab基础练习题(带答案).doc
- Matlab版本svm工具箱,matlab libsvm工具箱
- 美团获得小样本学习榜单FewCLUE第一!Prompt Learning+自训练实战
- 途家供应链系统架构演进实践
- Linux中有play命令吗,linux play命令
- 设计模式之十一个行为型模式的相关知识,简单易懂。
- ppt模板如何制作个性人物海报?
- 使用signature在移动端做电子签名canvas画板随触摸滚屏的bug
- 手机打字软件如何测试打字快,手机打字学好拼音最笨的方法 手机打字怎么练才能快...
- CreateJS 制作 H5 长图动画
- Maven配置阿里云HTTPS镜像地址
- 嵌入式软件测试的基本方法
- 通讯协议和通讯方式概述
- 一文讲明白互联网如何去中心化
热门文章
- 【opencv】【mediapipe】手势检测的有趣玩法
- 【opencv学习】【Canny边缘检测】
- [深度学习-优化]dropout防止过拟合的理解
- ubuntu下kaldi的安装以及实例的运行
- leetcode —— 654. 最大二叉树
- C/C++中的关键字
- OGNL表达式的特殊的符号
- 算法竞赛中的时间复杂度选择——以最大连续和问题为例
- [gtest][002] A quick start to build the Google C++ Testing project
- jboss怎么连接Oracle数据库,如何在Jboss中配置数据源