ZOJ:2913 Bus Pass
来源:互联网 发布:linux 复制覆盖文件 编辑:程序博客网 时间:2024/05/28 20:18
典型的BFS。
基本思路:从每条线路上的每个地区z出发进行BFS遍历;对每个地区j,如果地区j是最终求得的中心地区,则要保证从它出发能到达每条路上每个地区z,并且选择的星形阈值要尽可能的小,因此统计每个地区z到地区j最短距离中的最大值,这个最大值记录在数组元素step[j]中;最后求得的最小的星形阈值就是每个地区j的step[j]的最小值,中心地区就是取得最小值的地区j。
#include <iostream>#include <cstdlib>#include <cstdio>#include <cstring>#include <queue>#include <algorithm>#define MAXN 10000#define INF 1000000using namespace std;int step[MAXN+5];int ans[MAXN+5];int area[10005][12];bool used[MAXN+5];bool vis[MAXN+5];int main(){ int T; scanf("%d",&T); while(T--) { memset(area,-1,sizeof(area)); int nz,nr; scanf("%d%d",&nz,&nr); for(int i=0; i<nz; ++i) { int _id; scanf("%d",&_id); scanf("%d",&area[_id][0]); for(int j=1; j<=area[_id][0]; ++j) scanf("%d",&area[_id][j]); } memset(ans,0x80,sizeof(ans)); memset(used,0,sizeof(used)); for(int i=0; i<nr; ++i) { int n; scanf("%d",&n); for(int ii=0; ii<n; ++ii) { int tmp; scanf("%d",&tmp); if(used[tmp]) continue; else used[tmp]=true; queue<int> q; memset(step,0,sizeof(step)); memset(vis,0,sizeof(vis)); q.push(tmp); vis[tmp]=true; while(!q.empty()) { int t=q.front(); q.pop(); for(int j=1; j<=area[t][0]; ++j) if(!vis[area[t][j]]) { step[area[t][j]]=step[t]+1; vis[area[t][j]]=true; q.push(area[t][j]); } } for(int j=1; j<=MAXN; ++j) if(area[j][0]!=-1) ans[j]=max(ans[j],step[j]); } } int res=INF,pos; for(int i=1; i<=MAXN; ++i) if(area[i][0]!=-1) { if(ans[i]<res) { res=ans[i]; pos=i; } } printf("%d %d\n",res+1,pos); } return 0;}
- zoj 2913 Bus Pass
- ZOJ:2913 Bus Pass
- ZOJ 2913 : Bus Pass - BFS
- ZOJ 2913 Bus Pass BFS水题
- HDOJ 2377 / ZOJ 2913 Bus Pass
- ZOJ 2913 Bus Pass(BFS+滚动队列)
- ZOJ 2913 Bus Pass (最近的最远BFS HDU2377)
- (未完成) Bus Pass
- zoj2913 Bus Pass
- hdu 2377Bus Pass
- HDU 2377 Bus Pass
- hdu2377 Bus Pass
- HDU-2377 Bus Pass
- Bus Pass(bfs)
- HDU 2377 Bus Pass
- zoj2913 Bus Pass BFS
- Bus Pass-ZOJ2913
- HDU-2377-Bus Pass
- android 解析json数据格式
- Google China New Grad Test 2014 Round A Problem C
- beanstalkc 的常用指令
- Java中四种引用(强、软、弱、虚)
- Linux shell编程 3 ---- shell中的判断
- ZOJ:2913 Bus Pass
- 消息队列RabbitMQ和ActiveMQ的生产者流量控制
- 使用wait()与notify()改写上面的例子
- 12组nodes MySQL DB,每组2台Master-Master,批量清除过期的binlog释放磁盘空间
- android软件创建快捷方式
- fedora centos,ubuntu关于进程资源限制的问题
- 简单的内存池分析
- 加入header的自定义GridView
- Apache——Rewrite重写规则