zoj 2913 BFS
2023-03-14 10:17:52 时间
//zoj 2913 BFS // 从每条线路上的每个地区出发进行BFS遍历, // 统计每条线路上每个地区到其他地区最短距离中的最大值,求出所有最大值中的最小值。 #include<stdio.h> #include<queue> #include<string.h> using namespace std; #define MAX 10000 #define INF 100000 int nz,nr,cur; int mz[MAX]; int Edge[MAX][10]; int res[MAX],reach[MAX]; void bfs(int s) { int i,a,b,val,at; queue<int> q[2]; a=0;b=1;val=0; if(reach[s]<cur) { q[b].push(s); reach[s]=cur; res[s]=max(res[s],val+1); } while(!q[b].empty()) { swap(a,b); val++; while(!q[a].empty()) { at=q[a].front(); q[a].pop(); for(i=0;i<mz[at];i++) if(reach[Edge[at][i]]<cur) { q[b].push(Edge[at][i]); reach[Edge[at][i]]=cur; res[Edge[at][i]]=max(res[Edge[at][i]],val+1); } } } } int main() { //freopen("input.txt","r",stdin); int T,i,j,t,id,mr,ret,center; scanf("%d",&T); for(t=0;t<T;t++) { memset(reach,-1,sizeof(reach)); memset(res,0,sizeof(res)); cur=0; scanf("%d%d",&nz,&nr); for(i=0;i<nz;i++) { scanf("%d",&id); scanf("%d",&mz[id]); for(j=0;j<mz[id];j++) scanf("%d",&Edge[id][j]); } for(i=0;i<nr;i++) { scanf("%d",&mr); for(j=0;j<mr;j++) { scanf("%d",&id); bfs(id); cur++; } } ret=MAX,center=-1; for(i=0;i<10000;i++) { if(reach[i]==cur-1&&res[i]<ret) { ret=res[i]; center=i; } } printf("%d %d\n",ret,center); } return 0; }
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的