没看太懂题意orz

最优的是tarjan缩点之后问入度为0的点,因为问这个点可以知道整个块的情况

答案是这ans个入度为0的点都不是杀手的概率\( \frac{n-ans}{n} \)

但是有特殊情况就是size为1的单独scc,这是ans--,因为其他点确定之后这个点就确定了

#include<iostream>
#include<cstdio>
using namespace std;
const int N=300005;
int n,m,h[N],cnt,dfn[N],low[N],tot,si[N],bl[N],col,s[N],top,ans,d[N],rl[N];
bool v[N];
struct qwe
{
int ne,no,to;
}e[N];
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
void add(int u,int v)
{
cnt++;
e[cnt].ne=h[u];
e[cnt].no=u;
e[cnt].to=v;
h[u]=cnt;
}
void tarjan(int u)
{
low[u]=dfn[u]=++tot;
v[s[++top]=u]=1;
for(int i=h[u];i;i=e[i].ne)
{
if(!dfn[e[i].to])
{
tarjan(e[i].to);
low[u]=min(low[u],low[e[i].to]);
}
else if(v[e[i].to])
low[u]=min(low[u],dfn[e[i].to]);
}
if(dfn[u]==low[u])
{
rl[++col]=u;
while(s[top]!=u)
{
bl[s[top]]=col;
si[col]++;
v[s[top--]]=0;
}
bl[s[top]]=col;
si[col]++;
v[s[top--]]=0;
}
}
int ok(int u)
{
for(int i=h[rl[u]];i;i=e[i].ne)
if(d[bl[e[i].to]]==1)
return 0;
return 1;
}
int main()
{
n=read(),m=read();
for(int i=1;i<=m;i++)
{
int x=read(),y=read();
add(x,y);
}
for(int i=1;i<=n;i++)
if(!dfn[i])
tarjan(i);
for(int i=1;i<=m;i++)
if(bl[e[i].no]!=bl[e[i].to])
d[bl[e[i].to]]++;
for(int i=1;i<=col;i++)
if(!d[i])
ans++;//cerr<<ans<<endl;
for(int i=1;i<=col;i++)
if(si[i]==1&&!d[i]&&ok(i))
{
ans--;
break;
}
printf("%.6f\n",(double)(n-ans)/n);
return 0;
}

最新文章

  1. python 网络编程
  2. 学习 CSS 样式
  3. 2016年12月28日 星期三 --出埃及记 Exodus 21:23
  4. 第5章 绘图基础_5.1-5.4 GDI绘图
  5. CentOS系统没有javac命令
  6. Mac 上SVN上传.a文件
  7. (medium)LeetCode 210.Course Schedule II
  8. ArcGIS Desktop打开慢的解决办法
  9. 【CodeForces】【#286】Div.2
  10. 总有你需要的之 ios 小技巧 (下)
  11. 关于win10企业版在极域电子教室软件 v4.0 2015 豪华版的全屏控制下如何取得自由
  12. C语言--第3次作业
  13. QT之uic、moc、rcc命令生成相应的cpp文件
  14. nginx的下载、编译安装和启动
  15. socketserver 和 事件Event
  16. http get请求参数拼接
  17. MySQL left join right join inner join
  18. RAD 10.1多标签页bug
  19. bootstrap.yml与application.yml的区别
  20. BFC开启条件

热门文章

  1. 【转载】js中对象的使用
  2. js闭包的用途[转载]
  3. hdu - 5128 The E-pang Palace(枚举+计算几何)
  4. struts2中的session使用
  5. &quot;格式太旧或是类型库无效。 (异常来自 HRESULT:0x80028019 (TYPE_E_UNSUPFORMAT))&quot;
  6. Maven创建项目时出现Generating project in Interactive mode就一直卡住的解决方案
  7. kvm虚拟化学习笔记(四)之kvm虚拟机日常管理与配置
  8. 【转载】同步和互斥的POSIX支持(互斥锁,条件变量,自旋锁)
  9. 类的相互依赖导致StackOverflowError
  10. Deepin-安装QQ音乐(Windows程序)