题意  在全部城市中找一个中心满足这个中心到全部公交网站距离的最大值最小 输出最小距离和满足最小距离编号最小的中心

最基础的BFS  对每一个公交网站BFS  dis[i]表示编号为i的点到全部公交网站距离的最大值  bfs全然部网站后  dis[i]最小的点就是要求的点咯

#include<cstdio>
#include<cstring>
#include<queue>
#include<set>
using namespace std; typedef set<int>::iterator it;
const int N = 10000;
int dis[N], tdis[N], link[N][12];
queue<int> q;
set<int> zone; void bfs(int o)
{
memset(tdis, 0, sizeof(tdis));
tdis[o] = 1;
q.push(o);
while(!q.empty())
{
int cur = q.front();
q.pop();
if(tdis[cur] > dis[cur]) dis[cur] = tdis[cur];
for(int i = 1; i <= link[cur][0]; ++i)
{
int j = link[cur][i];
if(tdis[j] == 0) q.push(j), tdis[j] = tdis[cur] + 1;
}
}
} int main()
{
int cas, nz, nr, id, mz, mr, ans, t;
scanf("%d", &cas);
while(cas--)
{
zone.clear();
memset(dis, 0, sizeof(dis));
scanf("%d%d", &nz, &nr);
for(int i = 1; i <= nz; ++i)
{
scanf("%d %d", &id, &mz);
link[id][0] = mz;
zone.insert(id);
for(int i = 1; i <= mz; ++i)
scanf("%d", &link[id][i]);
} for(int i = 1; i <= nr; ++i)
{
scanf("%d", &mr);
for(int j = 1; j <= mr; ++j)
{
scanf("%d", &t);
bfs(t);
}
} it i = zone.begin();
ans = *i;
for(++i; i != zone.end(); ++i)
if(dis[*i] < dis[ans]) ans = *i;
printf("%d %d\n", dis[ans], ans);
}
return 0;
}

Bus Pass


Time Limit: 5 Seconds      Memory Limit: 32768 KB


You travel a lot by bus and the costs of all the seperate tickets are starting to add up.

Therefore you want to see if it might be advantageous for you to buy a bus pass.

The way the bus system works in your country (and also in the Netherlands) is as follows:

when you buy a bus pass, you have to indicate a center zone and a star value. You are allowed to travel freely in any zone which has a distance to your center zone which is less than
your star value. For example, if you have a star value of one, you can only travel in your center zone. If you have a star value of two, you can also travel in all adjacent zones, et cetera.

You have a list of all bus trips you frequently make, and would like to determine the minimum star value you need to make all these trips using your buss pass. But this is not always
an easy task. For example look at the following figure:

Here you want to be able to travel from A to B and from B to D. The best center zone is 7400, for which you only need a star value of 4. Note that you do not even visit this zone on
your trips!

Input

On the first line an integert(1 <=t<= 100): the number of test cases. Then for each test case:

One line with two integersnz(2 <=nz<= 9 999) andnr(1 <=nr<= 10): the number of zones and the number of bus trips, respectively.

nz lines starting with two integers idi (1 <= idi <= 9 999) and mzi (1 <= mzi <= 10), a number identifying
the i-th zone and the number of zones adjacent to it, followed by mzi integers: the numbers of the adjacent zones.

nr lines starting with one integer mri (1 <= mri <= 20), indicating the number of zones the ith bus trip visits, followed by mri integers:
the numbers of the zones through which the bus passes in the order in which they are visited.

All zones are connected, either directly or via other zones.

Output

For each test case:

One line with two integers, the minimum star value and the id of a center zone which achieves this minimum star value. If there are multiple possibilities, choose the zone with the lowest
number.

Sample Input

1

17 2

7400 6 7401 7402 7403 7404 7405 7406

7401 6 7412 7402 7400 7406 7410 7411

7402 5 7412 7403 7400 7401 7411

7403 6 7413 7414 7404 7400 7402 7412

7404 5 7403 7414 7415 7405 7400

7405 6 7404 7415 7407 7408 7406 7400

7406 7 7400 7405 7407 7408 7409 7410 7401

7407 4 7408 7406 7405 7415

7408 4 7409 7406 7405 7407

7409 3 7410 7406 7408

7410 4 7411 7401 7406 7409

7411 5 7416 7412 7402 7401 7410

7412 6 7416 7411 7401 7402 7403 7413

7413 3 7412 7403 7414

7414 3 7413 7403 7404

7415 3 7404 7405 7407

7416 2 7411 7412

5 7409 7408 7407 7405 7415

6 7415 7404 7414 7413 7412 7416

Sample Output

4 7400


ZOJ 2913 Bus Pass (近期的最远BFS HDU2377)的更多相关文章

  1. zoj 2913 Bus Pass

    对于每个输入的站点求出所有点到这个站点的最短路.用anss数组存下来,然后就可以用anss数组求出答案了. 题目分析清楚了 还是比较水的,折腾了一早上.. #include<stdio.h> ...

  2. Bus Pass

    ZOJ Problem Set - 2913 Bus Pass Time Limit: 5 Seconds      Memory Limit: 32768 KB You travel a lot b ...

  3. hdu 2377 Bus Pass

    Bus Pass Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  4. 【转载】图论 500题——主要为hdu/poj/zoj

    转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  5. ZOJ2913Bus Pass(BFS+set)

    Bus Pass Time Limit: 5 Seconds      Memory Limit: 32768 KB You travel a lot by bus and the costs of ...

  6. hdu2377Bus Pass(构建更复杂的图+spfa)

    主题链接: 啊哈哈,点我点我 思路: 题目是给了非常多个车站.然后要你找到一个社区距离这些车站的最大值最小..所以对每一个车站做一次spfa.那么就得到了到每一个社区的最大值,最后对每一个社区扫描一次 ...

  7. 致远A8任意文件写入漏洞_getshell_exp

    近期爆出致远 OA 系统的一些版本存在任意文件写入漏洞,远程攻击者在无需登录的情况下可通过向 URL /seeyon/htmlofficeservlet POST 精心构造的数据即可向目标服务器写入任 ...

  8. ZOJ 1091 Knight Moves(BFS)

    Knight Moves A friend of you is doing research on the Traveling Knight Problem (TKP) where you are t ...

  9. ZOJ 1005 Jugs(BFS)

    Jugs In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were confronted with th ...

随机推荐

  1. Ajax+Java实现大文件切割上传

    技术体系:html5(formdata) + java + servlet3.0+maven + tomcat7 <!DOCTYPE html> <html> <head ...

  2. java网络通信编程

    网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据,这个就是狭义的网络编程范畴.在发送和接收数据时,大部分的程序设计语言都设 ...

  3. LayoutInflater源码解析

    Android使用LayoutInflater来进行布局加载,通常获取方式有两种: 第一种: LayoutInflater layoutInflater = LayoutInflater.from(c ...

  4. 全局变量变为局部变量 & MVC思想

    1 函数中的全局变量如何变成局部变量? 全局变量之间会相互骚扰.所以在代码中不要用全局变量.ES6之前只有函数里面有全局变量. 全局变成局部变量怎么变? 把代-放在一个函数如中,再.call()执行一 ...

  5. 读书笔记6-浪潮之巅(part1)

    浪潮之巅 ——对于一个人来讲,一生能够赶上一次科技革命的浪潮也就足够了 近一百多年来,总有一些公司很幸运地站在了技术革命的浪尖上.而一旦处在那个位置,就算只用随着潮流的发展而前行,也能安安稳稳地发展十 ...

  6. ubuntu 安装 OpenCV-CUDA

    参考链接:http://www.cnblogs.com/platero/p/3993877.html 官方指导:https://help.ubuntu.com/community/OpenCV 0.这 ...

  7. Arguments Optional FreeCodeCamp

    function add() { if(typeof arguments[0] !== "number" || (arguments.length > 1 && ...

  8. Hadoop分布环境搭建步骤,及自带MapReduce单词计数程序实现

    Hadoop分布环境搭建步骤: 1.软硬件环境 CentOS 7.2 64 位 JDK- 1.8 Hadoo p- 2.7.4 2.安装SSH sudo yum install openssh-cli ...

  9. Python 不同列表时间测试

    import timeit import threading def test1(): l = [] for i in range(1000): l = l + [i] def test2(): l ...

  10. [剑指offer] 49. 丑数

    通俗易懂的解释: 首先从丑数的定义我们知道,一个丑数的因子只有2,3,5,那么丑数p = 2 ^ x * 3 ^ y * 5 ^ z,换句话说一个丑数一定由另一个丑数乘以2或者乘以3或者乘以5得到,那 ...