bzoj 2438: [中山市选2011]杀人游戏【tarjan】
2024-09-01 01:53:28
没看太懂题意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;
}
最新文章
- python 网络编程
- 学习 CSS 样式
- 2016年12月28日 星期三 --出埃及记 Exodus 21:23
- 第5章 绘图基础_5.1-5.4 GDI绘图
- CentOS系统没有javac命令
- Mac 上SVN上传.a文件
- (medium)LeetCode 210.Course Schedule II
- ArcGIS Desktop打开慢的解决办法
- 【CodeForces】【#286】Div.2
- 总有你需要的之 ios 小技巧 (下)
- 关于win10企业版在极域电子教室软件 v4.0 2015 豪华版的全屏控制下如何取得自由
- C语言--第3次作业
- QT之uic、moc、rcc命令生成相应的cpp文件
- nginx的下载、编译安装和启动
- socketserver 和 事件Event
- http get请求参数拼接
- MySQL left join right join inner join
- RAD 10.1多标签页bug
- bootstrap.yml与application.yml的区别
- BFC开启条件
热门文章
- 【转载】js中对象的使用
- js闭包的用途[转载]
- hdu - 5128 The E-pang Palace(枚举+计算几何)
- struts2中的session使用
- ";格式太旧或是类型库无效。 (异常来自 HRESULT:0x80028019 (TYPE_E_UNSUPFORMAT))";
- Maven创建项目时出现Generating project in Interactive mode就一直卡住的解决方案
- kvm虚拟化学习笔记(四)之kvm虚拟机日常管理与配置
- 【转载】同步和互斥的POSIX支持(互斥锁,条件变量,自旋锁)
- 类的相互依赖导致StackOverflowError
- Deepin-安装QQ音乐(Windows程序)