1106---BFS找最短路径
来源:互联网 发布:javabean 数据库 编辑:程序博客网 时间:2024/06/10 07:51
题目内容
题目参考链接:https://www.patest.cn/contests/pat-a-practise/1106
题目分析
1.题目分析完是找最短路径,用BFS很好
2.注意与1079分别。博客链接:http://blog.csdn.net/zhanggirlzhangboy/article/details/78543299
3.1079是求叶子节点的路径,1106是求最短路径
代码如下
#include <iostream>#include <queue>#include <vector>#include <math.h>#include <stdio.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */using namespace std;const int MAX = 100000+5;vector< vector<int> > v(MAX);int ans[MAX];int num = 0;int BFS(int n){ queue<int> q; q.push(n); int level = -1;//记录层次 int min = MAX; while(!q.empty()){ int size = q.size(); level++; for(int i=0;i<size;i++){//类似树的层次遍历 int top = q.front(); q.pop(); int len = v[top].size(); if(len!=0){//判断是否是叶子节点 for(int i=0;i<len;i++){ q.push(v[top][i]); } } else{ if(min>level){//求最小的层次 min = level; } ans[top]=level; } } } return min;}int main(int argc, char *argv[]) { int n; double p,r; cin>>n>>p>>r; for(int i=0;i<n;i++){ int k; cin>>k; for(int j=0;j<k;j++){ int id; cin>>id; v[i].push_back(id); } } int min = BFS(0);//最小的层次 for(int i=0;i<n;i++){//求个数 if(ans[i]==min){ num++; } } printf("%.4lf %d\n",pow((1+r/100),min)*p,num); return 0;}
阅读全文
1 0
- 1106---BFS找最短路径
- HDU 1372<记忆BFS找最短路径>
- hdu1026 BFS+记录路径
- BFS 求最短路径问题
- Pots BFS 记忆路径
- bfs+路径记录
- BFS(简单路径打印)
- bfs最短路径
- BFS如何记录路径
- BFS-记录路径
- POJ (BFS + 路径输出)
- POJ3984 BFS 输出路径
- 搜索 bfs 路径
- BFS输出路径
- BFS + 回溯路径 POJ
- BFS最短路路径
- hdu1026 bfs+记录路径
- bfs路径打印
- 最新的chromedriver与chrome的对应关系表
- AppBarLayout 介绍和简单使用
- 阿里云ECS服务器Centos安全漏洞修复
- Mastering the game of Go without human knowledge笔记
- QT学习之QString的arg方法
- 1106---BFS找最短路径
- 动态规划中的单调队列优化_补充
- Win10下python3和python2同时安装并解决pip共存问题 特别说明,本文是在Windows64位系统下进行的,32位系统请下载相应版本的安装包,安装方法类似。 使用python开
- js 日程插件库 -- fullCalender
- 为项目mybatis生成generatorConfig.xml的一种方式
- 学习AngularJs:Directive指令用法(完整版)
- find file with find ,locate which whereis
- Java 读取.properties中文乱码
- MS SQL 使用OpenDataSource连接excel 问题解决