题解:

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. BZOJ4415: [Shoi2013]发牌 树状数组+二分

    Description 假设一开始,荷官拿出了一副新牌,这副牌有N张不同的牌,编号依次为1到N.由于是新牌,所以牌是按照顺序排好的,从牌库顶开始,依次为1, 2,……直到N,N号牌在牌库底.为了发完所 ...

  2. 获取String类型汉字乱码,如何进行编码

    本文为博主原创,未经允许不得转载: 在解析properties文件中的汉字时,在java代码中解析得到的是一个乱码字符,形如图下: 导致乱码原因:由于在jdk中,默认为gbk编码方式进行编码盒接收的, ...

  3. mybatis与hibernate常用的持久化类,及sqlsession和sqlsessionTemplate区别

    首先, 通过翻阅源码,我们来整理一下mybatis进行持久化操作时重要的几个类:SqlSessionFactoryBuilder:build方法创建SqlSessionFactory实例.SqlSes ...

  4. 转:java项目经验面试总结

    转载: 在前期已经讲过怎样分析自己,对自己进行一个准确的定位,选择一个合适的求职方向!并结合自己的实际个人情况来写一份针对性很强的个人简历!个人简历就是个人的广告!好的简历可以更受到用人需求单位青睐! ...

  5. css未知大小的图片居中

    未知大小的图片在指定大小的div盒子中垂直水平居中: 无需要JS <style> .box { /*垂直居中*/ display: table-cell; vertical-align:m ...

  6. Python定位SVG元素

    svgelementXpath = "//div[12]/*[name()='svg']/*[name()='g']/*[name()='g'][2]/*[name()='g'][1]/*[ ...

  7. chrome的url列表里面也找不到chrome://plugins的原因

    plugins 页面被移除后,可以访问: chrome://settings/content 调整 Flash.PDF 的设置. 原本 plugins 页面就基本只剩下这两货了,移除掉确实没啥影响. ...

  8. SQLSERVER 对于非dbo的表增加注释

    平时我们创建表的时候总是dbo.imsi_collect_state,但是有时候为了方便管理我们可能会创建架构wifi,那么表名就是wifi.imsi_collect_state 原来增加注释的方式是 ...

  9. [Java学习] Java super关键字

    super 关键字与 this 类似,this 用来表示当前类的实例,super 用来表示父类. super 可以用在子类中,通过点号(.)来获取父类的成员变量和方法.super 也可以用在子类的子类 ...

  10. 20170517xlVBA添加数据透视表

    Sub AddPovitTable() 'Constance Const DATA_SHEET As String = "Advanced Filter" Const DATA_A ...