对于每个输入的站点求出所有点到这个站点的最短路。用anss数组存下来,然后就可以用anss数组求出答案了。

题目分析清楚了 还是比较水的,折腾了一早上。。

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<vector>
#include<queue>
#include<algorithm>
using namespace std;
struct Point{ int tott, node; };
vector<int> abc[];
int nz, nr, i, j, p, k, u, summ, ii;
int zhuan[];
int fan[];//
int anss[][];//存最短路
int ff[];//标记这个城市有没有搜过最短路
void BFS(int rr)
{
queue<Point>Q; Point start, t;
start.node = zhuan[k]; start.tott = ; anss[rr][zhuan[k]] = ; Q.push(start);
while (!Q.empty())
{
Point hd = Q.front(); Q.pop();
for (i = ; i < abc[hd.node].size(); i++)
{
if (hd.tott + < anss[rr][abc[hd.node][i]])
{
anss[rr][abc[hd.node][i]] = hd.tott + ;
t.node = abc[hd.node][i];
t.tott = hd.tott + ;
Q.push(t);
}
}
}
}
int main()
{
int sb;scanf("%d", &sb);
while (sb--)
{
scanf("%d%d", &nz, &nr);
for (i = ; i < ; i++) abc[i].clear();
for (i = ; i < ; i++) for (j = ; j < ; j++) anss[i][j] = 0x7FFFFFFF;
memset(zhuan, , sizeof(zhuan));memset(ff, , sizeof(ff));
int tot = , summ = ;
for (i = ; i <= nz; i++)
{
scanf("%d", &p);
if (zhuan[p] == ) { zhuan[p] = tot, fan[zhuan[p]] = p, tot++; }
scanf("%d", &k);
for (j = ; j <= k; j++)
{
scanf("%d", &u);
if (zhuan[u] == ) { zhuan[u] = tot, fan[zhuan[u]] = u, tot++; }
abc[zhuan[p]].push_back(zhuan[u]);
}
}
for (ii = ; ii <= nr; ii++)
{
scanf("%d", &u);
for (j = ; j <= u; j++)
{
scanf("%d", &k);
if (ff[k] == ){ BFS(summ); ff[k] = ; summ++; }
}
}
int pri = 0x7FFFFFFF; int pri2 = -;
for (i = ; i <= tot - ; i++)
{
int minn = -;
for (j = ; j < summ; j++) if (anss[j][i]>minn) minn = anss[j][i];
if (minn < pri){ pri = minn, pri2 = fan[i]; }
else if (minn == pri&&fan[i] < pri2)pri2 = fan[i];
}
printf("%d %d\n", pri + , pri2);
}
return ;
}

zoj 2913 Bus Pass的更多相关文章

  1. ZOJ 2913 Bus Pass (近期的最远BFS HDU2377)

    题意  在全部城市中找一个中心满足这个中心到全部公交网站距离的最大值最小 输出最小距离和满足最小距离编号最小的中心 最基础的BFS  对每一个公交网站BFS  dis[i]表示编号为i的点到全部公交网 ...

  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. 【HDOJ图论题集】【转】

    =============================以下是最小生成树+并查集====================================== [HDU] How Many Table ...

  8. hdu图论题目分类

    =============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...

  9. HDU图论题单

    =============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...

随机推荐

  1. PHP中file_exists与is_file、is_dir的区别,以及执行效率的比较 转自#冰雪傲骨#

    PHP中file_exists与is_file.is_dir的区别,以及执行效率的比较   判断文件是否存在,有2个常用的PHP函数:is_file 和 file_exists, 判断文件夹是否存在, ...

  2. WebService一、数据交互

    调用webservice总结:  1.加入第三方的jar包 Ksoap2-android-XXX    2.访问响应的webservice的网站,查看响应的信息,得到nameSpace,methodN ...

  3. webstrom30天免费试用期过后如何破解继续使用

    之前下了ws 直接就用了 也没有破解 30天过去了 老是提示你 神烦  网上找了一堆注册码什么的 终于发现一个良心网站 http://idea.qinxi1992.cn/ 步骤看下面的图

  4. centos下安装Jenkins轻松搞定

    jenkins安装步骤如下: 命令:yum -y list java* yum -y install java-1.7.0-openjdk.x86_64                         ...

  5. Javac编译与JIT编译

    本文转载自:http://blog.csdn.net/ns_code/article/details/18009455 编译过程 不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的 ...

  6. hdu 5833 Zhu and 772002 异或方程组高斯消元

    ccpc网赛卡住的一道题 蓝书上的原题 但是当时没看过蓝书 今天又找出来看看 其实也不是特别懂 但比以前是了解了一点了 主要还是要想到构造异或方程组 异或方程组的消元只需要xor就好搞了 数学真的是硬 ...

  7. ASP.NET中重复表格列合并的实现方法(转自脚本之家)

    这几天做一个项目有用到表格显示数据的地方,客户要求重复的数据列需要合并,就总结了一下.NET控件GridView 和 Repeater 关于重复数据合并的方法. 这是合并之前的效果: 合并之后的效果图 ...

  8. 让webstorm支持新建.vue文件

    1. 首先安装vue插件,安装方法: file-->setting  -->  plugin  ,点击plugin,在内容部分的左侧输入框不用输入任何东西,直接点击下图中的按钮. 如下图所 ...

  9. java 打开浏览器 url

    public class openBrowers { public static void main(String[] args) { try { //String url = "http: ...

  10. UNIX基础--Manual Pages

    联机手册 Manual Pages 最详细的使用说明文档莫过于 FreeBSD 里的联机手册了. 几乎每一个程序都会附上一份简短说明, 以介绍这个程序的的基本功能以及参数的用法. 我们能通过 man ...