hdu_5876_Sparse Graph(补图BFS)
附上叉姐的题解:
1009 Sparse Graph [by ftiasch]
题意:n 个点的无向完全图中删除 m 条边,问点 s 到其他点的最短路长度。
题解:
补图上的 BFS 是非常经典的问题。一般的做法是用链表(或者偷懒用 std::set)维护还没 BFS 过的点。当要扩展点 u 的时候,遍历一次还没访问过的点 v,如果 uv 没边,那么将 v 入队。否则将 v 留在未扩展点中。
很明显,后者只会发生 m 次,前者只会发生 n 次,所以复杂度是 O(n + m)O(n+m).
#include<bits/stdc++.h>
#define F(i,a,b) for(int i=a;i<=b;i++)
using namespace std; const int N=2e5+,M=,inf=2e6+;
int t,n,m,ed,v[M],nxt[M],g[N],x,y,S,d[N]; void adg(int x,int y){v[++ed]=y,nxt[ed]=g[x],g[x]=ed;} void fuck()
{
set<int>ta,tb;
set<int>::iterator it;
queue<int>Q;
F(i,,n)d[i]=inf;
d[S]=,Q.push(S);
F(i,,n)if(i!=S)ta.insert(i);
while(!Q.empty())
{
int now=Q.front();Q.pop();
for(int i=g[now];i;i=nxt[i])if(ta.find(v[i])!=ta.end())ta.erase(v[i]),tb.insert(v[i]);
for(it=ta.begin();it!=ta.end();it++)Q.push(*it),d[*it]=d[now]+;
ta.swap(tb),tb.clear();
}
F(i,,n)if(i!=S)printf("%d%c",d[i]==inf?-:d[i]," \n"[i==n]);
} int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m),ed=;
F(i,,n)g[i]=;
F(i,,m)scanf("%d%d",&x,&y),adg(x,y),adg(y,x);
scanf("%d",&S),fuck();
}
return ;
}
hdu_5876_Sparse Graph(补图BFS)的更多相关文章
- [Algorithms] Graph Traversal (BFS and DFS)
Graph is an important data structure and has many important applications. Moreover, grach traversal ...
- HDU 5876 Sparse Graph(补图上BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5876 题意: 有一个 n 个点无向图,再给你 m 对顶点, 代表着这 m 对顶点之间没有边, 除此之外 ...
- hdu 5876 (补图BFS) Sparse Graph
题目:这里 题意: 相当于一开始给一个初始好了的无向完全图给你,然后给让你删除m条边,再给你一个点v,最后问你在剩下的图里从这个点v出发能到达所有边点的最小路径是多少? 一看是所有点的最小路径,一看就 ...
- HDU 5876:Sparse Graph(BFS)
http://acm.hdu.edu.cn/showproblem.php?pid=5876 Sparse Graph Problem Description In graph theory, t ...
- 【BZOJ】1098: [POI2007]办公楼biu(补图+bfs+链表)
http://www.lydsy.com/JudgeOnline/problem.php?id=1098 显然答案是补图连通块..... 想到用并查集...可是连补图的边都已经...n^2了...怎么 ...
- 2017ICPC南宁赛区网络赛 Minimum Distance in a Star Graph (bfs)
In this problem, we will define a graph called star graph, and the question is to find the minimum d ...
- POJ-2415 Hike on a Graph (BFS)
Description "Hike on a Graph" is a game that is played on a board on which an undirected g ...
- 补图BFS(hdu 5876)
题目大意: 给出一个图和起点S,求补图中S到其他点的最短距离. http://acm.hdu.edu.cn/showproblem.php?pid=5876 我自己的垃圾做法: 用线段树来维护dijk ...
- algorithm@ find the shortest path in a graph using BFS
Finding Shortest Paths By BFS
随机推荐
- ps 如何裁切图片成一定的长宽高比例
1打开一张图片然后点击拆件工具然后在面板上长宽高,按enter键盘,OK拆建完成
- Token注解防止表单的重复提交
注解的一些基础: 参见http://blog.csdn.net/duo2005duo/article/details/50505884和 http://blog.csdn.net/duo2005duo ...
- http://www.spasvo.com/ceshi/open/kyxncsgj/Jmeter/
http://www.spasvo.com/ceshi/open/kyxncsgj/Jmeter/
- 创建maven多模块项目(idea工具)
1.创建父项目模块(new 一个maven空项目模块)不勾选 create from archetype 删除src目录 2.创建子模块 webapp (该模块为web入口模块) 3.创建其他子模块 ...
- 加班计时App
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 序列化与反序列化总结(Serializable和Parcelable)
序列化是指将对象的状态信息转换为可以存储或传输的形式的过程. 在Java中创建的对象,只要没有被回收就可以被复用,但是,创建的这些对象都是存在于JVM的堆内存中,JVM处于运行状态时候,这些对象可以复 ...
- Python初识与简介【开篇】
目录 1.扯淡 2.Python历史 3.Python简介 4.Python应用 5.为什么是python而不是其他语言? 6.Python的种类 7.Python的特点 8.Python设计哲学 9 ...
- WSAEventSelect IO复用模型
1 今天帮一学习WSAEventSelect的网友排查一个测试用服务器端recv返回0的问题,出现这个问题直观判断一般是客户端socket关闭了,可是他的代码很简单并且是本机测试,通过wireshar ...
- CVE-2015-0057 POC构造 & 利用分析(2015.7)
CVE-2015-0057 POC构造 & 利用分析 主要内容: 构造POC 利用思路 0x00 初探 从这篇文章可以获知: 1.问题出在 win32k!xxxEnableWndSBArrow ...
- yii2.0 面包屑的使用
yii2中面包屑是yii2自带的小部件,类似本网站的导航栏应该就是采用面包屑来完成的 例子如下,需要引入 yii\widgets\Breadcrumbs echo Breadcrumbs::widge ...