P8881 懂事时理解原神
简要题意
\(T\) 组数据,每组数据给出一个 \(n\) 个顶点,\(m\) 条边的无向无权图。求出使用下面的伪代码求 \(1\) 为源点的单源最短路答案正确的概率。保留 \(3\) 位小数。
int dis[N],vis[N];// dis 是答案数组
void dfs(int u){
vis[u]=1;
vector<int> vct;
for(int i=1;i<=n;i++){
if(!vis[i] && 存在边(u,i)){
vct.push_back(i);
}
}
random_shuffle(vct.begin(),vct.end());
for(int i:vct){
dis[v]=dis[u]+1;
dfs(i);
}
}
void solve(){
for(int i=1;i<=n;i++){
vis[i]=0;
dis[i]=-1;
}
dis[1]=0;
dfs(1);
}
对于 \(100\%\) 的数据,\(1\le n,m\le 50000,1\le T\le 10\),保证所输入的图无重边、自环。
思路
可以看出,这个最短路非常像求树的深度。树有一个重要的性质就是不存在环。如果有环一定错了。
为什么?因为如果存在一个环,像这样:

模拟一遍:
- \(\operatorname{dis}_1=0\)
- \(\operatorname{dis}_4=1\)
- 如果先遍历 \(2\),那么 \(\operatorname{dis}_2=2\),否则 \(\operatorname{dis}_3=2\)。
- 如果上一步先遍历 \(2\),那么 \(\operatorname{dis}_3=3\),否则 \(\operatorname{dis}_2=3\)。
正确的 \(\operatorname{dis}_2=2,\operatorname{dis}_3=2\),而该算法都算错了。
读者可以再枚举几个,可以发现,环上节点会算错。这时候,如果环上再接出去一个节点,那么它依然会算错。
于是得出结论:如果存在从 \(1\) 出发的环。那么答案是 \(0.000\),否则答案是 \(1.000\)。
并查集解决。时间复杂度 \(O(T(m+n)\log n)\)。
代码
#include <bits/stdc++.h>
using namespace std;
const int N = 50005;
int fa[N],t,n,m;
bool tag[N];
int find(int x){
if(fa[x]==x)return x;
else return fa[x]=find(fa[x]);
}
inline void merge(int u,int v){
if(find(u)==find(v)){
tag[find(v)]=1;
return;
}
fa[find(u)]=find(v);
}
signed main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>t;
while(t--){
cin>>n>>m;
for(int i=1;i<=n;i++) fa[i]=i;
for(int i=1;i<=n;i++) tag[i]=0;
for(int i=1,u,v;i<=m;i++){
cin>>u>>v;
merge(u,v);
}
bool flag=1;
for(int i=1;i<=n;i++){
if(find(1)==find(i)&&tag[i]){
cout<<"0.000\n";
flag=0;
break;
}
}
if(flag) cout<<"1.000\n";
}
return 0;
}
P8881 懂事时理解原神的更多相关文章
- 利用Github Action和.Net 5 自动执行米游社原神每日签到福利
GenshinDailyHelper 原神的签到福利是需要单独下载APP进行才可以领取,并且每天需要打卡,虽然奖励并不是很可观,但有一些摩拉,食材和可观的经验书累计起来还是挺有吸引力的.可能本身不怎么 ...
- 利用.NET 5和Github Action 自动执行米游社原神每日签到福利
背景 众所周知,原神的签到福利是需要下载app才可以领取的.但像我这种一般不怎么刷论坛的人,每天点开app签到很麻烦. 很多大佬利用Github的Action自动执行的模式,实现了很多好东西.加上.n ...
- NSSCTF-原来你也玩原神
是一个杂项的题目,看到题目名字的时候,以为是和之前遇到的一个杂项题里面的原神的编码有关,然后发现不是的,给的是一个压缩包文件,使用winhex打开,并没有看到压缩包的文件头也没有看到,使用一般常用的b ...
- 【Unity原神AR开发实战 2022】下载原神模型,PMX转FBX,导入到Unity,AR设置,测试应用程序,生成应用程序
文章目录 一.前言 二.模型下载 1.官网下载 2.模之屋官方下载 3.第三方链接 三.pmx转fbx 1.Blender插件CATS的下载与安装 2.pmx模型的导入 四.Unity开发部分 1.V ...
- windows优化原神
原神3.0新地图很卡顿? 锐距显卡带不动? 看一下我的配置 英特尔i5-1135G7 内存16GB可以拓展32GB 固态512GB 原神优化前帧率50左右 优化后59-60最差55 展示图原神设置图 ...
- Python之美[从菜鸟到高手]--深刻理解原类(metaclass)
本来想自己写这篇文章的,可当我读了这篇文章http://blog.jobbole.com/21351/,我打消了这个念头,因为肯定写的没有人家的好,说的通俗易懂,面面俱到.就厚着面皮修改下格式,测试下 ...
- 自定制页面跳转时携带原搜索参数的URL
介绍 django自带反向解析生成URL的功能,目的是避免硬编码,较少代码维护的代价. 前端页面使用模板语法,如:{% url "rbac: request menu_list" ...
- [OC笔记]@property之个人理解,大神轻拍
/** * 一个简单的对象 * * @author suzhen * */ public class SimpleObjcet { /** * 声明一个age字段 */ private Object ...
- React实现顶部固定滑动式导航栏(导航条下拉一定像素时显示原导航栏样式)
摘要 基于react的框架开发一个顶部固定滑动式的酷炫导航栏,当导航栏置顶时,导航栏沉浸在背景图片里:当鼠标滑动滚轮时,导航栏固定滑动并展示下拉样式. JS部分 相关技术栈:react.antd.re ...
- VC程序只运行一个实例,并在打开多个时激活原窗口
(一)单文档应用程序 1.在应用程序类C~~App::InitInstance()函数中判断是否已有一个应用程序实例正在运行 BOOL C~~App::InitInstance() { . ...
随机推荐
- Linux实战笔记__Centos7上搭建DVWA网站(基于宝塔)
安装宝塔套件 宝塔官网有远程安装代码https://www.bt.cn/bbs/thread-19376-1-1.html 下载DVWA并上传至/www/wwwroot目录 下载地址: 配置数据库连接 ...
- 有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。
第一题 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数 ...
- 谷歌浏览器xpath获取网页按钮路径
谷歌浏览器打开要获取的页面按下F12打开开发者工具 点击最左边的元素选择器,高亮后光标移动到对应元素框(这里只选择里层的元素,如这里要选到input级别) 点击后下方HTML会高亮显示,鼠标移动上去右 ...
- LoadRunner11脚本关联+运行负载+分析结果
一.脚本创建关联和插入检查点 脚本录制完成后,首先需运行脚本回放,验证是否可回放成功,然后找出各事务请求中的关联点! 如本例子中,录制的场景为:打开综合窗口收件-->查询事项-->窗口登记 ...
- hwlog--utils.go
// Copyright(C) 2021. Huawei Technologies Co.,Ltd. All rights reserved.// Package hwlog provides the ...
- 【Java 并发003】原理层面:Java并发三特性全解析
一.前言 不管什么语言,并发的编程都是在高级的部分,因为并发的涉及的知识太广,不单单是操作系统的知识,还有计算机的组成的知识等等.说到底,这些年硬件的不断的发展,但是一直有一个核心的矛盾在:CPU.内 ...
- 使用c#的 async/await编写 长时间运行的基于代码的工作流的 持久任务框架
持久任务框架 (DTF) 是基于async/await 工作流执行框架.工作流的解决方案很多,包括Windows Workflow Foundation,BizTalk,Logic Apps, Wor ...
- C# Panel动态添加滚动条
/// <summary> /// panel控件的事件:在向该控件添加控件时发生 /// </summary> private void panel1_ControlAdde ...
- warning: ‘setAxisX‘ is deprecated
解决 将 chart->setAxisX(valueAxisX,lineSeries); 改为: chart->addSeries(lineSeries); chart->creat ...
- 实践案例:平安健康的 Dubbo3 迁移历程总结
本篇是 Apache Dubbo 的实践案例.感兴趣的朋友可以访问官网了解更多详情,或搜索关注官方微信公众号 Apache Dubbo 跟进最新动态. 1 背景 我们公司从15年开始就使⽤dubbo作 ...