博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 5876 Sparse Graph
阅读量:6656 次
发布时间:2019-06-25

本文共 1240 字,大约阅读时间需要 4 分钟。

广搜。

因为路径的长度均为$1$,所以每个节点只会被更新一次。

思路:对于一个还未确定路径长度的点$i$,如果他除了与他直接相邻的点之外有别的点已经确定了最短路,那么这个点现在也可以确定最短路了。

#pragma comment(linker, "/STACK:1024000000,1024000000")#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long LL;const double pi=acos(-1.0),eps=1e-6;void File(){ freopen("D:\\in.txt","r",stdin); freopen("D:\\out.txt","w",stdout);}template
inline void read(T &x){ char c=getchar(); x=0; while(!isdigit(c)) c=getchar(); while(isdigit(c)) {x=x*10+c-'0'; c=getchar();}}const int maxn=200010;int T,n,m,d[maxn],sz,h[maxn],s;struct Edge{ int u,v,nx;}e[maxn];void add(int u,int v){ e[sz].u=u; e[sz].v=v; e[sz].nx=h[u]; h[u]=sz++;}int main(){ scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); memset(d,-1,sizeof d); memset(h,-1,sizeof h); sz=0; for(int i=1;i<=m;i++) { int u,v; scanf("%d%d",&u,&v); add(u,v); add(v,u); } scanf("%d",&s); d[s]=0; sz=1; int dis=0; while(1) { int sum=0; dis++; for(int i=1;i<=n;i++) { if(d[i]!=-1) continue; int g=0; for(int j=h[i];j!=-1;j=e[j].nx) if(d[e[j].v]!=-1&&d[e[j].v]

 

转载于:https://www.cnblogs.com/zufezzt/p/5866176.html

你可能感兴趣的文章
centos6.6关闭防火墙和selinux
查看>>
JAVA RMI远程方法调用简单实例
查看>>
Citrix桌面虚拟化解决方案介绍
查看>>
WCF学习2
查看>>
python之潜心研究多线程(thread模块) 建议使用threading模块
查看>>
阵列无法解挂导致VCS双机倒换失败
查看>>
ORACLE中用for in 使用cursor
查看>>
Apache - AH00451
查看>>
vim使用技巧
查看>>
nagios+centreon监控构建
查看>>
bootstrap-data-target触发模态弹出窗元素
查看>>
3.第一个MyBatis程序_进化
查看>>
获得ios屏幕上的像素
查看>>
FTPS(下)
查看>>
一个合格的运维工程师应该具有的素质
查看>>
字符串与 集合
查看>>
sort algorithm
查看>>
第 三 十 三 天:shell 编 程 之 监 控 脚 本
查看>>
玩转开放式虚拟格式ovf
查看>>
忘记的五笔输入
查看>>