【codevs2488】绿豆蛙的归宿

 

这个题开始正向拓扑排序,然后各种wa,心灰意冷,找了个题解,和同学研究了半天,甚至曾经一度认为题解是错的。

这个题正向反向应该都无所谓,但是我实在是蒻,打了半天正向都没打过去,最后跟随dalao的步伐走向了反向拓扑

#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<stack>
using namespace std;
int n,m,x,y,z,head[100010],tail,ru[100010],chu[100010];
bool flag[100010];
double ans[100010];
queue<int>qwq;
struct in
{int to,ne,co;
}ter[200020];
inline void build(int f,int l,int c)
{ter[++tail]=(in){l,head[f],c},head[f]=tail;
}
int main()
{memset(head,-1,sizeof(head));scanf("%d%d",&n,&m);for(int i=1;i<=m;i++)scanf("%d%d%d",&x,&y,&z),build(y,x,z),ru[x]++,chu[x]++;//反向建图,因为从1跑不到的点肯定反向建图也跑不到1 for(int i=1;i<=n;i++)if(!ru[i])//如果原图该点,没有出边(终点)
            qwq.push(i);while(!qwq.empty()){int qaq=qwq.front();qwq.pop();//这里可以换成栈,跑的还更快,虽然我不知道为啥 for(int i=head[qaq];i>0;i=ter[i].ne){int t=ter[i].to;double gai=1.0/chu[t];ans[t]+=(ans[qaq]+ter[i].co)*gai;//求期望的必要步骤嘛qwq ru[t]--;if(!ru[t])qwq.push(t);} }for(int i=1;i<=n;i++)printf("%.2lf ",ans[i]);//printf("%.2lf",ans[1]);
}
/*关于这个反向拓扑排序可以的原因
因为每一个点都可以到达终点,所以无论正向反向,所有的从1到n的路径的期望值都不会变
所以正向反向无所谓
为什么要用拓扑排序
因为只有一个点所有到他的边都被走过,关于到它的期望值才算真正确定 
*/ #include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<stack>
using namespace std;
int n,m,x,y,z,head[100010],tail,ru[100010],chu[100010];
bool flag[100010];
double ans[100010];
queue<int>qwq;
struct in
{int to,ne,co;
}ter[200020];
inline void build(int f,int l,int c)
{ter[++tail]=(in){l,head[f],c},head[f]=tail;
}
int main()
{memset(head,-1,sizeof(head));scanf("%d%d",&n,&m);for(int i=1;i<=m;i++)scanf("%d%d%d",&x,&y,&z),build(y,x,z),ru[x]++,chu[x]++;//反向建图,因为从1跑不到的点肯定反向建图也跑不到1 for(int i=1;i<=n;i++)if(!ru[i])//如果原图该点,没有出边(终点)
            qwq.push(i);while(!qwq.empty()){int qaq=qwq.front();qwq.pop();//这里可以换成栈,跑的还更快,虽然我不知道为啥 for(int i=head[qaq];i>0;i=ter[i].ne){int t=ter[i].to;double gai=1.0/chu[t];ans[t]+=(ans[qaq]+ter[i].co)*gai;//求期望的必要步骤嘛qwq ru[t]--;if(!ru[t])qwq.push(t);} }for(int i=1;i<=n;i++)printf("%.2lf ",ans[i]);//printf("%.2lf",ans[1]);
}
/*关于这个反向拓扑排序可以的原因
因为每一个点都可以到达终点,所以无论正向反向,所有的从1到n的路径的期望值都不会变
所以正向反向无所谓
为什么要用拓扑排序
因为只有一个点所有到他的边都被走过,关于到它的期望值才算真正确定 
*/ #include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<stack>
using namespace std;
int n,m,x,y,z,head[100010],tail,ru[100010],chu[100010];
bool flag[100010];
double ans[100010];
queue<int>qwq;
struct in
{int to,ne,co;
}ter[200020];
inline void build(int f,int l,int c)
{ter[++tail]=(in){l,head[f],c},head[f]=tail;
}
int main()
{memset(head,-1,sizeof(head));scanf("%d%d",&n,&m);for(int i=1;i<=m;i++)scanf("%d%d%d",&x,&y,&z),build(y,x,z),ru[x]++,chu[x]++;//反向建图,因为从1跑不到的点肯定反向建图也跑不到1 for(int i=1;i<=n;i++)if(!ru[i])//如果原图该点,没有出边(终点)
            qwq.push(i);while(!qwq.empty()){int qaq=qwq.front();qwq.pop();//这里可以换成栈,跑的还更快,虽然我不知道为啥 for(int i=head[qaq];i>0;i=ter[i].ne){int t=ter[i].to;double gai=1.0/chu[t];ans[t]+=(ans[qaq]+ter[i].co)*gai;//求期望的必要步骤嘛qwq ru[t]--;if(!ru[t])qwq.push(t);} }for(int i=1;i<=n;i++)printf("%.2lf ",ans[i]);//printf("%.2lf",ans[1]);
}
/*关于这个反向拓扑排序可以的原因
因为每一个点都可以到达终点,所以无论正向反向,所有的从1到n的路径的期望值都不会变
所以正向反向无所谓
为什么要用拓扑排序
因为只有一个点所有到他的边都被走过,关于到它的期望值才算真正确定 
*/ 

 

转载于:https://www.cnblogs.com/Loi-dfkdsmbd/articles/7706082.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

半导体光刻机行业深度报告:复盘ASML,探寻本土光刻产业投资机会

报告来源&#xff1a;西南证券1、 提要&#xff1a;光刻工艺是晶圆制造最核心环节&#xff0c;光刻产业链协同发展成为光刻机突破关键因子1.1 光刻定义晶体管尺寸&#xff0c;光刻工艺合计占芯片成本近 30% 2019 年全球半导体市场规模达 4090 亿美元&#xff0c;成为数码产业的…

C语言的参数传递原理解析(值传递)

本讲我们和大家一起来聊一聊C语言中有关参数传递的一些知识。 1.问题引入 请写出以下程序的打印结果。 #include // 将某整数加10 void add_by_10(int a){ a a 10; } int main(int argc, char *argv[]){ int a 2; add_by_10(a); printf("a %d\n", a); 上面的程序非…

字符串php手册,php知识点复习之字符串

欢迎进入Linux社区论坛&#xff0c;与200万技术人员互动交流 >>进入 /*echo mark qqqqqq\nqqqqqqbrqqqqqqqqqqqqq\rqqqqqqqqqqqqqqqqqq mark*/ //技术标志要另起一行&#xff0c;并且是顶格写&#xff01; //作用跟""类似//最致命的一点是&#xff1a;mark后面…

一个诡异的循环:意识何以意识到意识自身?

© Lia Koltyrina / Shutterstock本文经公众号利维坦&#xff08;ID&#xff1a;liweitan2014&#xff09;授权转载存在的感觉可能只是一种感觉。——本凯利夫&#xff08;Ben L. Callif&#xff09;与其他事物相同&#xff0c;我似乎身处宇宙漩涡的中心&#xff0c;整个宇…

美军重视扩展现实技术的研究和应用

来源&#xff1a; 知远战略与防务研究所 编译&#xff1a;王绍祺美国陆军退役中将苏珊劳伦斯曾担任陆军G-6首席信息官、网络企业技术司令部司令&#xff0c;现为埃森哲联邦服务公司武装部队部门总经理。苏珊劳伦斯在美国《信号》杂志2019年10月号发表文章&#xff0c;指出扩展…

寒武纪开盘暴涨350%,市值突破1000亿,85后创始人身家超300亿!千亿盛宴背后隐忧不可忽视!...

来源&#xff1a;EETOP7月20日&#xff0c;寒武纪科创板首发上市&#xff0c;发行价每股64.39元&#xff0c;开盘价为250元/股&#xff0c;涨幅288%。最高价更是达到了295元/股&#xff0c;涨幅358%&#xff01;市值一度突破1000亿人民币&#xff0c;不过随后股民信心有所不足&…

Mac上的抓包工具Charles

今天就来看一下Mac上如何进行抓包&#xff0c;之前有一篇文章介绍了使用Fidder进行抓包 http://blog.csdn.net/jiangwei0910410003/article/details/19806999 不过可惜的是&#xff0c;Fidder使用C#开发的&#xff0c;所以就不能在Mac上使用了&#xff0c;不过还有另外一个抓包…

oracle 在所有表中查某个值,oracle需要查询某个字段的值在其他某个表中有没的值有相同...

使用场景&#xff1a;知道某个字段的值(例如&#xff1a;“张三”)&#xff0c;需要查询在其他某个表中有没有相同的值&#xff0c;常用于搜索关联表等。对于oracle数据库&#xff1a;Pl\sql没有搜索功能&#xff0c;需借助存储过程&#xff0c;完成搜索&#xff0c;搜索结果是…

oracle11g session,Oracle11g中Killsession心得

我们知道,在Oracle数据库中,可以通过kill session的方式来终止一个进程,其基本语法结构为:我们知道,在Oracle数据库中,可以通过kill session的方式来终止一个进程,其基本语法结构为:alter system kill session sid,serial# ;被kill掉的session,状态会被标记为killed,Oracle会在…

26个顶尖战略咨询公司常用分析模型详解!

导 读 ( 文/ CMKT咨询圈 整理 )咨询行业是不少小伙伴的奋斗目标&#xff0c;麦肯锡、波士顿、贝恩等顶尖战略咨询更是所有行业顶尖的存在&#xff0c;咨询顾问是如何解决问题&#xff0c;为企业做战略规划&#xff0c;咨询公司常用分析模型功不可没。几乎每个大型快消企业的高管…

中国工程院王辰院士对话百度CTO王海峰,大数据与医学的一场史诗级邂逅

来源&#xff1a;脑极体你有多久没有关注疫情的消息了&#xff1f;除了戴口罩变得格外闷热&#xff0c;以及偶尔从海外传来的新闻之外&#xff0c;我已经很少会主动点开《新型冠状病毒肺炎疫情地图》了&#xff0c;而几个月之前&#xff0c;我简直恨不得“住”在疫情新闻板块里…

rm linux 复制目录,linux学习(四)复制(cp)移动(mv)删除(rm)查找(find)文件、文件夹操作、软硬链接的区别...

复制文件cp命令用于复制文件到制定的目录 语法格式为&#xff1a;cp [选项] 源文件或目录 目标文件或目录命令选项含义cp -d当复制符号链接时&#xff0c;把目标文件或目录页建立为符号链接&#xff0c;并指向与源文件或目录连接的原视文件或者目录cp -f强行复制文件或者目录cp…

程序猿的日常——JVM内存模型与垃圾回收

Java开发有个很基础的问题&#xff0c;虽然我们平时接触的不多&#xff0c;但是了解它却成为Java开发的必备基础——这就是JVM。在C中我们需要手动申请内存然后释放内存&#xff0c;否则就会出现对象已经不再使用内存却仍被占用的情况。在Java中JVM内置了垃圾回收的机制&#x…

智慧城市丨智能时代的城市设计新策略

来源&#xff1a;万物智能视界智慧城市作为解决城市病、提高城市发展质量以及改善城市群建设结构的新型城市形态&#xff0c;已成为世界各地城市发展的必然趋势。借助新兴的信息技术能够随时随地感知、捕获、传递和处理信息&#xff0c;能够实现对城市的精细化、智能化管理&…

从看见到听见,机器人传感能否解决智能制造检测的最后一公里难题?

来源&#xff1a;机器人大讲堂导读手机、无人机、机器人眼睛里的隐藏王者&#xff0c;华为、小米的视觉供应商&#xff0c;这家隐形冠军现在也开始在机器人行业发力&#xff0c;将延伸人类感官?华为、VIVO、小米、魅族&#xff0c;这些市场上你能找到的手机品牌&#xff0c;其…

linux alsa声卡命令,Linux ALSA声卡驱动之一:ALSA架构简介

一. 概述ALSA是Advanced Linux Sound Architecture 的缩写&#xff0c;目前已经成为了linux的主流音频体系结构&#xff0c;想了解更多的关于ALSA的这一开源项目的信息和知识&#xff0c;请查看以下网址&#xff1a;http://www.alsa-project.org/。在内核设备驱动层&#xff0…

寒武纪上市:AI芯片和普通芯片有何不同?全球AI芯片公司大全都在这里了

来源&#xff1a;Zach小生作者&#xff1a;腾讯新闻知识官、美国宾州州立大学硕士、芯片工程师Zach小生7月20日&#xff0c;寒武纪正式在A股科创板上市&#xff0c;成为AI芯片第一股&#xff0c;引起了业内的热议和关注。根据相关的资料显示&#xff0c;目前中国IC设计企业已超…

linux java输出到文件,linux java输出到文件内容

linux java输出到文件内容[2021-01-30 07:48:37] 简介:php去除nbsp的方法&#xff1a;首先创建一个PHP代码示例文件&#xff1b;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐&#x…

关于TCP/IP协议及网络通信相关问题

一、网络模型&#xff1a; OSI标准模型七层架构以及其传输数据的模型如下&#xff1a; 传输信息的过程由上之下逐渐封装&#xff0c;接收过程则是由下至上逐渐拆包&#xff0c;每一层只解析自己独立的部分。 二、网络的机要素 1、IP 1 public class NetTest { 2 public sta…

世界人工智能发展究竟到了什么水平

来源&#xff1a;第一财经关于人工智能在当今科技界的发展水平&#xff0c;学术界、产业界和媒体界可能会有不同的看法。我经常听到的一个说法是&#xff1a;现在基于大数据与深度学习的人工智能是一种完全新颖的技术形态&#xff0c;它的出现能够全面地改变未来人类的社会形态…