zoj 2913 Bus Pass
对于每个输入的站点求出所有点到这个站点的最短路。用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的更多相关文章
- ZOJ 2913 Bus Pass (近期的最远BFS HDU2377)
题意 在全部城市中找一个中心满足这个中心到全部公交网站距离的最大值最小 输出最小距离和满足最小距离编号最小的中心 最基础的BFS 对每一个公交网站BFS dis[i]表示编号为i的点到全部公交网 ...
- Bus Pass
ZOJ Problem Set - 2913 Bus Pass Time Limit: 5 Seconds Memory Limit: 32768 KB You travel a lot b ...
- hdu 2377 Bus Pass
Bus Pass Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- ZOJ2913Bus Pass(BFS+set)
Bus Pass Time Limit: 5 Seconds Memory Limit: 32768 KB You travel a lot by bus and the costs of ...
- hdu2377Bus Pass(构建更复杂的图+spfa)
主题链接: 啊哈哈,点我点我 思路: 题目是给了非常多个车站.然后要你找到一个社区距离这些车站的最大值最小..所以对每一个车站做一次spfa.那么就得到了到每一个社区的最大值,最后对每一个社区扫描一次 ...
- 【HDOJ图论题集】【转】
=============================以下是最小生成树+并查集====================================== [HDU] How Many Table ...
- hdu图论题目分类
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
- HDU图论题单
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
随机推荐
- python数据类型以及模块的含义
print(sys.path) #打印环境变量 print(sys.argv) #打印相对路径 print(sys.argv[1]) #打印对应的参数 1.在python最上有时候会导入os模块,表示 ...
- python爬虫-知乎登录
#!/usr/bin/env python3 # -*- coding: utf-8 -*- ''' Required - requests (必须) - pillow (可选) ''' import ...
- input中的name,value以及label中的for
input具有很多属性,比较常用的有type,value,name,placeholder,multiple,checked等.对于其中的name.value.label相关以及标签外的文字,我一直是 ...
- Santa Claus and Tangerines
Santa Claus and Tangerines 题目链接:http://codeforces.com/contest/752/problem/E 二分 显然直接求答案并不是很容易,于是我们将其转 ...
- css学习笔记1
:before,:after伪元素 伪元素特性(目前已经遇到的) 它不存在于文档中,所以js无法操作它 它属于主元素本身,有些伪类仅仅是代表元素内容的一部分,譬如:first-letter代表第一个字 ...
- SDN理解:SDN现状
目录 - SDN现状 - (一)SDN现状 - SDN诞生的背景 - SDN的介绍 - (二)SDN领域的相关组织和发展现状 - 1.ONF - 2.OpenDaylight - 3. IETF - ...
- python2 基础
标识符 标识符是由字母,下划线和字母组成的字符序列标识符必须以字母,下划线开头,不能以数字开头标识符不能是关键字标识符可以为任意长度 算术运算符+-*///**% 科学记数法 aEb 或者aE+b例: ...
- Error(10028)
两个进程里都有同一个条件判断的话,会产生并行信号冲突的问题. 同一个信号不允许在多个进程中赋值,否则则为多驱动. 进程的并行性决定了多进程不同能对同一个对象进行赋值.
- php笔记(八)PHP类与对象之抽象类
<?php //通过abstract关键字定义一个抽象类 abstract class ACanEat{ //通过abstract关键字定一个不用具体实现的抽象方法eat() abstract ...
- php 问答
1,如何设置长生命期的session ? 将 session.cookie_lifetime ,session.gc_maxlifetime 的时间设置长一点. 2,为什么初始化session的时候报 ...