[中山市选]杀人游戏 (Tarjan缩点)

题目链接

Solution

可以考虑到如果知道环内一点的身份,如果凶手在其中就查出来了,同时不会有危险.
那么对警察造成威胁的就是那些身份不明且不能从其他点转移过来的点.
那么大部答案就是缩完点之后入度为 \(0\) 的联通块数量.
但是,会有特殊情况:
1277344-20180907171807276-1626038471.png

如图,我们就只要查 \(2\) 或者 \(1\) 其中的一点即可.
也就是说如果一个联通块仅包含一个点,且其出边所到的点都能由其他点推导出来.
那么我们可以通过调整对于入度为 \(0\) 的点的访问顺序以忽略这个点.
同时这样的点只能有一个(可以很简单举出反例).

Code

#include<bits/stdc++.h>
using namespace std;
const int maxn=1000008;
struct sj{int to,next;}a[maxn];
int head[maxn],size,flagg;
int dfn[maxn],low[maxn];
int sta[maxn],top,belong[maxn];
int cnt,tot,v[maxn],n;
int du[maxn],ans,num,m;
int fr[maxn],to[maxn],siz[maxn];
void add(int x,int y)
{a[++size].to=y;a[size].next=head[x];head[x]=size;
}void tarjan(int x)
{dfn[x]=low[x]=++tot;sta[++top]=x;v[x]=1;for(int i=head[x];i;i=a[i].next){int tt=a[i].to;if(!dfn[tt]){tarjan(tt);low[x]=min(low[x],low[tt]);}else if(v[tt]) low[x]=min(low[x],dfn[tt]);}if(dfn[x]==low[x]){belong[x]=++cnt;v[x]=0;do{siz[cnt]++;belong[sta[top]]=cnt;v[sta[top]]=0;}while(sta[top--]!=x);}
}int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int x,y; scanf("%d%d",&x,&y);add(x,y);}for(int i=1;i<=n;i++)if(!dfn[i])tarjan(i);for(int x=1;x<=n;x++)for(int i=head[x];i;i=a[i].next){int tt=a[i].to;if(belong[tt]!=belong[x])du[belong[tt]]++,fr[++num]=belong[x],to[num]=belong[tt];}memset(a,0,sizeof(a));memset(head,0,sizeof(head));size=0;for(int i=1;i<=num;i++)add(fr[i],to[i]);for(int x=1;x<=cnt;x++)if(du[x]==0){ans++;if(siz[x]==1){int flag=1;for(int i=head[x];i;i=a[i].next){int tt=a[i].to;if(du[tt]==1){flag=0;break;}}if(!flagg)flagg=flag;if(!head[x])flagg=1;}}ans-=flagg;if(n==1)ans=0;if(m==0)ans=n-1;printf("%.6lf\n",(n*1.0-ans*1.0)/(n*1.0));
}

转载于:https://www.cnblogs.com/Kv-Stalin/p/9605664.html

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

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

相关文章

数据库为date型,而前端要显示String型,问题解决

关于数据库字段类型与前端显示类型不符问题解决&#xff1a;最近遇到这样的一个问题&#xff0c;有一个字段在数据库是date型的&#xff0c;但是产品需求我们在前端这样显示&#xff0c;如下图&#xff1b; 先把时间显示出来&#xff0c;最后一行显示上面所有记录的汇总。 而这…

codeforces 1039B Subway Pursuit【二分+随机】

题目&#xff1a;戳这里 题意&#xff1a;一个点在[1,n]以内&#xff0c;我们可以进行4500次查询&#xff0c;每次查询之后&#xff0c;该点会向左或向右移动0~k步&#xff0c;请在4500次查询以内找到该点。 解题思路&#xff1a;一边二分&#xff0c;一边随机。 交互题似乎有好…

kbmmw中向服务器端传递对象的一种简单方式

运行环境&#xff1a;delphi 10.2kbmmw 5.6.20 在kbmmw 的老版本中&#xff0c;要向服务器传送一个本地的对象&#xff0c;一般都需要进行一些转换&#xff0c;例如通过序列化的方式。 在新版的kbmmw中这一切都变的很简单&#xff0c;使用use... 方法就可以了&#xff0c;非常的…

给自己的网址加上https,添加ssl证书(springboot项目)

给自己的网址加上https,添加ssl证书1.先去阿里云官网首页&#xff0c;登录&#xff0c;找到 *SSL证书*2.点击 *立即购买*3.选择好点击确定就可以4.输入自己的域名和手机号&#xff0c;等待即可&#xff0c;成功他就叫给你发邮件5.通知你通过以后就进入SSL控制台&#xff0c;点击…

c++命名空间---namespace

C 命名空间 C 应用程序中。例如&#xff0c;您可能会写一个名为 func() 的函数&#xff0c;在另一个可用的库中也存在一个相同的函数 func()。这样&#xff0c;编译器就无法判断您所使用的是哪一个 func() 函数。 因此&#xff0c;引入了命名空间这个概念&#xff0c;专门用于解…

基于深度学习的中文语音识别系统框架(pluse)

目录 声学模型GRU-CTCDFCNNDFSMN语言模型n-gramCBHG数据集本文搭建一个完整的中文语音识别系统&#xff0c;包括声学模型和语言模型&#xff0c;能够将输入的音频信号识别为汉字。 声学模型使用了应用较为广泛的递归循环网络中的GRU-CTC的组合&#xff0c;除此之外还引入了科大…

jSignature签名的用法,一文教会你(一)前端代码

jSignature签名的用法1、先看看效果以后最后它是什么格式的2、先去下载该js3、下载以后就把它引入我们的HTML中4、看一下我的例子吧&#xff01;下期我们在讲&#xff0c;怎么把base64在后台处理&#xff0c;然后在存进我们指定的位置&#xff0c;以及怎么存数据库&#xff1b;…

jSignature签名的用法,一文教会你(二)后台代码

1、先在我们的项目里加几个工具类&#xff0c;代码如下 AbstractUploadAction &#xff08;名字可以自取&#xff0c;这个不影响&#xff09; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream;import javax.s…

HTML5 多图片上传(前端+后台详解)

HTML5 多图片上传&#xff08;前端后台详解&#xff09;1、参考jquery插件库2、修改代码3、添加的后台代码4、删除的后台代码1、参考jquery插件库 手机端实现多图片上传 2、修改代码 我发现他这里的代码仅仅只是显示出来了&#xff0c;对后台一点作用都没有&#xff0c;于是…

vue2.0移动端自定义性别选择提示框

这篇文章主要是简单的实现了vue2.0移动端自定义性别选择的功能&#xff0c;很简单但是经常用到&#xff0c;于是写了一个小小的demo&#xff0c;记录下来。 效果图&#xff1a; 图片.png实现代码&#xff1a; <template><div class"app"><div class&q…

微信小程序入门的一些建议,替大家踩坑

小程序入门教程1&#xff0c; 建议先去看官方文档2&#xff0c;说说app.json这个文件3、app.js4、点击事件5、跳转页面最后要说一下我踩的一个大坑&#xff0c;样式问题1&#xff0c; 建议先去看官方文档 微信小程序官方文档 官方文档里有下载微信开发者工具的地址&#xff0c…

云服务器Linux安装,配置,使用nginx

云服务器Linux安装&#xff0c;配置&#xff0c;使用nginxlinux安装nginxnginx的使用linux安装nginx 检查是否安装了GCC&#xff08;可在任何目录下输入&#xff09; yum list installed | grep "gcc"如果像下图一样&#xff0c;就说明安装了&#xff0c;反之没安装…

原来文化设计可以这样玩!

设计是什么&#xff1f;设计是一种以科学的方法去高效解决问题的办法&#xff0c;为之设计。例如一个灯&#xff0c;是为了照明&#xff0c;如果改良的灯&#xff0c;肯定是为了高效或者节能地解决照明这个需求&#xff0c;没毛病吧&#xff1f; 那么中秋的花灯是什么&#xff…

Windows安装python,以及python的集成开发环境Pycharm

安装python&#xff0c;以及python的集成开发环境Pycharm1&#xff0c;安装python&#xff08;Windows&#xff09;2&#xff0c;安装python的集成开发环境1&#xff0c;安装python&#xff08;Windows&#xff09; 进入python官网 点击图中标识出来的这个&#xff0c;是个ex…

Python 最难的问题

Python 最难的问题 超过十年以上&#xff0c;没有比解释器全局锁&#xff08;GIL&#xff09;让Python新手和专家更有挫折感或者更有好奇心。 未解决的问题 随处都是问题。难度大、耗时多肯定是其中一个问题。仅仅是尝试解决这个问题就会让人惊讶。之前是整个社区的尝试&#x…

解决echart中:Cannot read property ‘queryComponents‘ of undefined

在使用案例的echart的日历图表的时候&#xff0c;遇到了&#xff1a; Uncaught TypeError: Cannot read property ‘queryComponents’ of undefined 思考了很久&#xff0c;还百度了&#xff0c;结果还是不好使&#xff0c;最后终于被我在一个问答了找到了答案。 刚开始我是…

ListT.Find用法学习

泛型集合List<T>中的Find函数用于查找集合中符合指定条件的元素..相比foreach遍历元素&#xff0c;用Find函数查找&#xff0c;代码更简洁. 函数原型如下&#xff1a; public T Find(Predicate<T> match); 其中Predicate为C#定义好的委托&#xff0c;原型如下&…

从零开始的全栈工程师——html篇1.6

浮动与伪类选择器 一、浮动(float) 1.标准文档流 标准文档流是一种默认的状态 浏览器的排版是根据元素的特征&#xff08;块和行级&#xff09; 从上往下 从左往右排版 这就是标准文档流 2.浮动(float)float:left/right; 因为标准文档流会使页面的状态固定 元素会自动从左往…

idea+springboot+mongodb的简单测试使用分享

1&#xff0c;先去官网下载&#xff0c;选择版本&#xff0c;选择Windows&#xff0c;就可以点击下载了。 2&#xff0c;安装mongodb。 下一步安装 “install mongoDB compass” 不勾选&#xff08;当然你也可以选择安装它&#xff0c;可能需要更久的安装时间&#xff09;&a…

project01

the question 最早时间出发为第一架航班&#xff0c;接下来第二架要求&#xff1a;到达日期与第一架航班的出发日期的时间间隔不小于45分钟&#xff0c;且序号最小依次类推将所有航班排完the data the transmission of the data import numpy as np import pandas as pd from p…