CCCC L2-020. 功夫传人 搜索 bfs && 精度+ 特判
https://www.patest.cn/contests/gplt/L2-020
题解:给你一颗树,让你遍历一遍,顺便更新一下数据,每次到根节点时将其对应的数据加到ans上面。这里用的bfs。
坑:1.卡精度:float会wa ,要用double
2.卡特殊情况:只有根节点
3.//类型转换表达式要加两个括号
//4.题意不明啊,什么叫 减弱r,除非得道。?
技巧:卡样例:写一句if(n==1) return 1 ;如果某个样例显示 返回非零 就说明。。。你懂的。ps:某个样例只有一份一般是边界情况
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<queue>
#include<map>
#include<cmath>
using namespace std;
const int N = 1e5 + ;
vector<int > E[N];
int vis[N];
double p[N];
map<int, double> M;
int main() {
int n;
double z, r;
cin >> n >> z;
scanf("%lf", &r);
r /= ;
for (int i = ; i<n; i++) {
int m;
cin >> m;
if (m == ) { double x; cin >> x; M[i] = x; continue; }//得道
while (m--) {
int x;
cin >> x;
E[i].push_back(x);
} }
//特判掉一个人的数据
if (M.count()) { cout << (int)z*M[]; return ; }//卡样例技巧
//找到得道者,顺便更新所有人的功力。算出ans;1.dfs到0,2.bfs
double ans = ;
queue<int>Q;
Q.push(); vis[] = ; p[] = z;
while (!Q.empty()) {
int now = Q.front();
Q.pop(); for (int i = ; i<E[now].size(); i++) {
int v = E[now][i];
if (vis[v])continue; Q.push(v); vis[v] = ; p[v] = p[now] * (-r);//减弱r,除非得道。
if (M.count(v)) {
ans += p[v] * M[v]; continue;
}
} } int a = ans;
printf("%d", a);
system("pause");
}
CCCC L2-020. 功夫传人 搜索 bfs && 精度+ 特判的更多相关文章
- PAT L2-020 功夫传人【BFS】
一门武功能否传承久远并被发扬光大,是要看缘分的.一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱-- 直到某一支的某一代突然出现一个天分特别高的弟子(或者是吃到了灵丹.挖到 ...
- 天梯赛 L2-020. 功夫传人 BFS
L2-020. 功夫传人 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一门武功能否传承久远并被发扬光大,是要看缘分的.一般来 ...
- HDU 1312 Red and Black --- 入门搜索 BFS解法
HDU 1312 题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象 ...
- 【算法入门】广度/宽度优先搜索(BFS)
广度/宽度优先搜索(BFS) [算法入门] 1.前言 广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略.因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较 ...
- 深度优先搜索DFS和广度优先搜索BFS简单解析(新手向)
深度优先搜索DFS和广度优先搜索BFS简单解析 与树的遍历类似,图的遍历要求从某一点出发,每个点仅被访问一次,这个过程就是图的遍历.图的遍历常用的有深度优先搜索和广度优先搜索,这两者对于有向图和无向图 ...
- 利用广度优先搜索(BFS)与深度优先搜索(DFS)实现岛屿个数的问题(java)
需要说明一点,要成功运行本贴代码,需要重新复制我第一篇随笔<简单的循环队列>代码(版本有更新). 进入今天的主题. 今天这篇文章主要探讨广度优先搜索(BFS)结合队列和深度优先搜索(DFS ...
- L2-020. 功夫传人*
L2-020. 功夫传人 参考博客 #include<vector> #include<cstring> #include<algorithm> using nam ...
- 广度优先搜索 BFS算法
广度优先搜索算法(Breadth-First-Search,BFS),又称作宽度优先搜索.BFS算法是从根节点开始,沿着树的宽度遍历树的节点.如果所有节点均被访问,则算法中止. 算法思想 1.首先将根 ...
- L2-020. 功夫传人(dfs+vector 或者 邻接矩阵+dij+优先队列)
L2-020. 功夫传人 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一门武功能否传承久远并被发扬光大,是要看缘分的.一般来 ...
随机推荐
- swoole的进程模型架构
swoole的强大之处就在与其进程模型的设计,既解决了异步问题,又解决了并行. 主线程MainReactor swoole启动后主线程会负责监听server socket,如果有新的连接accept, ...
- 处理特殊格式的GET传参
有群友问 这样的传参格式如何接受获取 xx.php?con="one"=>5,"two"=>0,"three"=>1 那么 ...
- iOS - 实现语言本地化/国际化
实现iOS语言本地化/国际化(图文详解) 前言 语言本地化,又叫做语言国际化.是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言.往往一些应用程序需要提供给多个 ...
- 在MyEclipse(2015)中上传项目到github的步骤(很详细)
(图文)在MyEclipse(2015)中上传项目到github的步骤(很详细) git|smartGit使用详解 SmartGit使用教程
- String例子
#include <string.h> class String{ public: String(const String& str); String(const char* st ...
- 《征服C指针》读书笔记
本文同时发布在我的个人博客上,欢迎访问~ www.seekingdream.cn 在读完K&R之后,对C的认识就是指针.数组.网上的人们对指针也有些“敬而远之”的感觉.最近从同学处淘得< ...
- 【转】java:Session(会话)机制详解
书中讲:以下情况,Session结束生命周期,Servlet容器将Session所占资源释放:1.客户端关闭浏览器2.Session过期3.服务器端调用了HttpSession的invalidate( ...
- MFC 三种消息
在MFC应用程序中传输的消息有三种类型:窗口消息.命令消息和控件通知. (1)窗口消息:WM_XXX 窗口消息(Window Message)一般与窗口的内部运作有关,如:创建窗口.绘制窗口和销毁窗口 ...
- Visual Studio for Mac离线安装教程
Visual Studio for Mac离线安装教程 可以在线安装,也可以离线安装(本次安装博主使用离线,在线安装失败了) 据说翻个墙就可以,有条件的就翻吧 没条件的我于是选择离线安装………… 离线 ...
- android include标签的使用,在RelativeLayout中使用include标签需注意!!!!!
转:http://4265337.blog.163.com/blog/static/195375820127935731114/ include和merge标记的作用主要是为了解决layout的重用问 ...