题解:

tarjan+概率

首先tarjan缩点

然后计算一个x,计算方法:

1.每当有一个强连通分量i的入度为0,那么x++

2.如果有一个强连通分量i,它的入度为0,且它连的每一条边只有他连,那么x-1

答案就是(n-x)/n

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+,M=3e5+;
int dfn[N],num[N],low[N],x,y,an[N],cnt,fi[N];
int zz[M],ne[M],f[M],k,size[N],n,m,r[N],a[N],t,l;
int jb(int x,int y)
{
zz[++k]=y;
f[k]=x;
ne[k]=fi[x];
fi[x]=k;
}
int dfs(int u)
{
dfn[u]=low[u]=++l;
a[++t]=u;
for(int i=fi[u];i;i=ne[i])
if(!dfn[zz[i]])
{
dfs(zz[i]);
low[u]=min(low[u],low[zz[i]]);
}
else if(!an[zz[i]])low[u]=min(low[u],dfn[zz[i]]);
if(low[u]==dfn[u])
{
num[++cnt]=u;
while(t)
{
an[a[t]]=cnt;
size[cnt]++;
if(a[t--]==u) break;
}
}
}
int pd(int x)
{
int u=num[x];
for(int i=fi[u];i;i=ne[i])
if(r[an[zz[i]]]==)return ;
return ;
}
int main()
{
scanf("%d%d",&n,&m);
while (m--)
{
scanf("%d%d",&x,&y);
jb(x,y);
}
for(int i=;i<=n;i++)
if(!dfn[i]) dfs(i);
for(int i=;i<=k;i++)
if(an[f[i]]!=an[zz[i]]) r[an[zz[i]]]++;
int ans=;
for(int i=;i<=cnt;i++)
if(!r[i]) ans++;
for(int i=;i<=cnt;i++)
if(size[i]==&&!r[i]&&pd(i))
{
ans--;
break;
}
printf("%.6lf",(double)(n-ans)/n);
return ;
}

bzoj2438的更多相关文章

  1. 【bzoj2438】 中山市选2011—杀人游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=2438 (题目链接) 题意 n个点的有向图,其中有一个是杀手,每个人成为杀手的概率相同.警察询问一个人 ...

  2. bzoj2438 杀人游戏 Tarjan强联通

    [bzoj2438][中山市选2011]杀人游戏 Description 一位冷血的杀手潜入 Na-wiat,并假装成平民.警察希望能在 N 个人里面,查出谁是杀手.警察能够对每一个人进行查证,假如查 ...

  3. LG4819/BZOJ2438 「中山市选2011」杀人游戏 Tarjan缩点+概率

    问题描述 LG4819 BZOJ2438 题解 发现如果有一些人之间认识关系形成环,只需要问一个人就能把控整个环. \(\mathrm{Tarjan}\)缩点. 缩点之后所有入度为\(0\)的点,必须 ...

  4. bzoj2438[中山市选2011]杀人游戏

    Description 一位冷血的杀手潜入 Na-wiat,并假装成平民.警察希望能在 N 个人里面, 查出谁是杀手. 警察能够对每一个人进行查证,假如查证的对象是平民,他会告诉警察,他 认识的人, ...

  5. [BZOJ2438]杀人游戏(缩点+特判)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2438 分析:如果出现了环,那么只要询问环上的一个人,那么环上其他的人的信息也就知道了, ...

  6. 【BZOJ-2438】杀人游戏 Tarjan + 缩点 + 概率

    2438: [中山市选2011]杀人游戏 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1638  Solved: 433[Submit][Statu ...

  7. 【BZOJ2438】 [中山市选2011]杀人游戏 tarjan强连通分量+缩点

    Description 一位冷血的杀手潜入 Na-wiat,并假装成平民.警察希望能在 N 个人里面,查出谁是杀手. 警察能够对每一个人进行查证,假如查证的对象是平民,他会告诉警察,他认识的人, 谁是 ...

  8. 【强连通分量+概率】Bzoj2438 杀人游戏

    Description 一位冷血的杀手潜入 Na-wiat,并假装成平民.警察希望能在 N 个人里面,查出谁是杀手. 警察能够对每一个人进行查证,假如查证的对象是平民,他会告诉警察,他认识的人, 谁是 ...

  9. BZOJ2438:[中山市选2011]杀人游戏(强连通分量)

    Description 一位冷血的杀手潜入 Na-wiat,并假装成平民.警察希望能在 N 个人里面,查出谁是杀手.警察能够对每一个人 进行查证,假如查证的对象是平民,他会告诉警察,他认识的人, 谁是 ...

随机推荐

  1. Python3基础 set add 向集合中加入新的元素

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  2. Git基础 —— Github 的使用

    Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 Github 的利用 Gith ...

  3. POJ 1679 The Unique MST (次小生成树)题解

    题意:构成MST是否唯一 思路: 问最小生成树是否唯一.我们可以先用Prim找到一棵最小生成树,然后保存好MST中任意两个点i到j的这条路径中的最大边的权值Max[i][j],如果我们能找到一条边满足 ...

  4. HTTP协议中TCP的三次握手 and HTTPS

    https://www.cnblogs.com/zxh930508/p/5432700.html https://www.cnblogs.com/digdeep/p/4832885.html

  5. Spring 入门 web.xml配置详解

    Spring 入门 web.xml配置详解 https://www.cnblogs.com/cczz_11/p/4363314.html https://blog.csdn.net/hellolove ...

  6. codeforces 251 div2 D. Devu and his Brother 三分

    D. Devu and his Brother time limit per test 1 second memory limit per test 256 megabytes input stand ...

  7. Ubuntu 下载

    http://releases.ubuntu.com/

  8. 学以致用 ---- vue子组件→父组件通信

    之前写过一篇关于 vue2.0中v-on绑定自定义事件 的随笔,但是今天实际应用的时候才发现根本就不理解,下面是实际工作中遇到的问题: [情景描述]页面中的[下拉搜索组件],因为多个页面中用到,所以抽 ...

  9. angular组件层次与军事指挥层级职责的联系

    又继续读angular文档,发现自己之前理解还是有误.按官方文档的思路service不是属于component的,是属于module的.module才是负责完整领域逻辑的单位.demo的英雄编辑器给我 ...

  10. iconv编码转换

    环境:cocos2dx 3.10 1.vs环境下编译windows版本,需要增加头文件和链接库①cocos2d-x-3.10\external\win32-specific\icon\include② ...