博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZOJ-2913 Bus Pass---BFS进阶版
阅读量:6872 次
发布时间:2019-06-26

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

题目链接:

题目大意:

问哪个区域到公交路线上所有区域的最大距离最小

思路:

这里要求出到底是哪个区域到某些指定区域的最大距离最小,最开始想到的是每个两个点求出距离,但是点数很多,不现实,又想到枚举所有区域到指定区域的距离,此果正向求是做不到的,应该反向求解,对指定区域进行BFS,求这些区域到其他所有区域的最短路,由于道路是双向的,求出的这些最短路程也就是所有点到指定区域的最短路程,对于每个点,保存它到指定区域的最大距离,最后在这些最大距离中找出最小的距离以及该区域的编号。

有几个易错点:

vis数组在第一个节点加入队列中就要开始标记第一个元素已经入队了。

更新最大距离是,应该在每次取出头结点的时候更新不能在加入队列的时候更新(除非额外更新第一个节点),因为加入队列的事后更新的话,最开始的那个已经入队的节点的最大距离没有更新,这一点很重要

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 using namespace std;13 typedef long long ll;14 const int maxn = 1e4 + 10;15 const int INF = 1e9 + 7;16 int T, n, m, cases;17 int ans[maxn];//ans[i]保存着从i点出发到线路上的所有点的时间中的最大时间18 int Map[maxn][12];//邻接表19 bool vis[maxn];20 struct node21 {22 int x, time;23 node(){}24 node(int x, int time):x(x), time(time){}25 };26 void bfs(int u)27 {28 queue
q;29 //cout<<"---------"<
<<"-----------"<
s;51 int main()52 {53 cin >> T;54 while(T--)55 {56 scanf("%d%d", &n, &m);57 s.clear();58 memset(Map, -1, sizeof(Map));59 memset(ans, -1, sizeof(ans));60 int x, tot;61 for(int i = 0; i < n; i++)62 {63 scanf("%d%d", &x, &tot);64 s.insert(x);65 for(int j = 0; j < tot; j++)66 {67 scanf("%d", &Map[x][j]);68 }69 }70 for(int i = 0; i < m; i++)71 {72 scanf("%d", &x);73 for(int i = 0; i < x; i++)74 {75 scanf("%d", &tot);76 bfs(tot);77 }78 }79 int minsum = INF, mi;80 for(set
::iterator it = s.begin(); it != s.end(); ++it)81 {82 if(minsum > ans[*it])83 {84 mi = *it;85 minsum = ans[*it];86 }87 }88 printf("%d %d\n", minsum, mi);89 }90 return 0;91 }

 

转载于:https://www.cnblogs.com/fzl194/p/8746663.html

你可能感兴趣的文章
python 高级函数
查看>>
myeclipse从svn检出代码转成maven后格式有误解决方法
查看>>
F.Cards with Numbers
查看>>
Learn Python 004: string slicing
查看>>
[转载] 教你如何迅速秒杀掉:99%的海量数据处理面试题
查看>>
checkbox复选框的一些深入研究与理解
查看>>
简单入门Buffer
查看>>
【HDU】6110 路径交(2017百度之星) 线段树+RMQ-LCA+树链的交
查看>>
自定义Attribute 服务端校验 客户端校验
查看>>
Java锁系列|Java锁体系(一)
查看>>
SDN第四次作业
查看>>
HTML5之本地存储SessionStorage
查看>>
c语言学习之基础知识点介绍(三):scanf函数
查看>>
python lambda
查看>>
ubuntu配置caffe的python接口pycaffe
查看>>
C#--笔记
查看>>
[题集]一些有趣的问题
查看>>
[HNOI2010]城市建设
查看>>
系统设计 样题
查看>>
Paint House II
查看>>