BZOJ 1486 最小圈
二分答案是显然的,我们需要dfs版spfa判一下负环。
看起来是n^2其实很快。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxv 3050
#define maxe 10050
#define eps 1e-9
#define inf 0x7f7f7f7f7f7f7f7fLL
using namespace std;
struct edge
{
int v,nxt;
double c,w;
}e[maxe];
int n,m,x,y,g[maxv],nume=,flag;
double z,dis[maxv],l,r,ans;
bool vis[maxv];
void addedge(int u,int v,double w)
{
e[++nume].v=v;e[nume].c=w;
e[nume].nxt=g[u];g[u]=nume;
}
void rebuild(double x)
{
for (int i=;i<=nume;i++)
e[i].w=e[i].c-x;
}
void dfs(int x)
{
vis[x]=true;
for (int i=g[x];i;i=e[i].nxt)
{
int v=e[i].v;
if (dis[v]>dis[x]+e[i].w)
{
if (!vis[v]) {dis[v]=dis[x]+e[i].w;dfs(v);}
else {flag=;break;}
}
}
vis[x]=false;
}
bool check(double x)
{
rebuild(x);flag=;
for (int i=;i<=n;i++) {vis[i]=false;dis[i]=;}
for (int i=;i<=n;i++)
{
dfs(i);
if (flag) return true;
}
return false;
}
int main()
{
scanf("%d%d",&n,&m);
for (int i=;i<=m;i++)
{
scanf("%d%d%lf",&x,&y,&z);
addedge(x,y,z);
}
ans=-;l=-inf;r=inf;
while (r-l>=eps)
{
double mid=(l+r)/;
if (check(mid)) r=mid;
else {ans=mid;l=mid;}
}
printf("%.8lf\n",ans);
return ;
}
BZOJ 1486 最小圈的更多相关文章
- BZOJ 1486 最小圈(01分数规划)
好像是很normal的01分数规划题.最小比率生成环. u(c)=sigma(E)/k.转化一下就是k*u(c)=sigma(E). sigma(E-u(c))=0. 所以答案对于这个式子是有单调性的 ...
- bzoj 1486: [HNOI2009]最小圈 dfs求负环
1486: [HNOI2009]最小圈 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1022 Solved: 487[Submit][Status] ...
- BZOJ 1486: [HNOI2009]最小圈( 二分答案 + dfs判负圈 )
二分答案m, 然后全部边权减掉m, 假如存在负圈, 那么说明有平均值更小的圈存在. 负圈用dfs判断. ------------------------------------------------ ...
- bzoj千题计划227:bzoj1486: [HNOI2009]最小圈
http://www.lydsy.com/JudgeOnline/problem.php?id=1486 二分答案 dfs版spfa判负环 #include<queue> #include ...
- 1486: [HNOI2009]最小圈
Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 3129 Solved: 1543[Submit][Status][Discuss] Descripti ...
- BZOJ1486 HNOI2009 最小圈 【01分数规划】
BZOJ1486 HNOI2009 最小圈 Description 应该算是01分数规划的裸板题了吧..但是第一次写还是遇到了一些困难,vis数组不清零之类的 假设一个答案成立,那么一定可以找到一个环 ...
- 【BZOJ1486】最小圈(分数规划)
[BZOJ1486]最小圈(分数规划) 题面 BZOJ 洛谷 求图中边权和除以点数最小的环 题解 分数规划 二分答案之后将边权修改为边权减去二分值 检查有无负环即可 #include<iostr ...
- bzoj1486【HNOI2009】最小圈
1486: [HNOI2009]最小圈 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1778 Solved: 827 [Submit][Statu ...
- [HNOI2009]最小圈
题目描述 对于一张有向图,要你求图中最小圈的平均值最小是多少,即若一个圈经过k个节点,那么一个圈的平均值为圈上k条边权的和除以k,现要求其中的最小值 输入输出格式 输入格式: 第一行2个正整数,分别为 ...
随机推荐
- [转载]使用SoapUI进行负载测试
使用了SoapUI进行负载测试 http://www.cnblogs.com/zerotest/p/4668918.html 负载测试是相当独特的,我们已经创建了一个功能,使您能够快速创建性能测试,并 ...
- (07)odoo扩展API
* 打开XML-RPC 连接 >>> import xmlrpclib >>> srv, db = 'http://localhost:8069', ' ...
- CSS3发光字动画
;} img{ width:200px; height:200px; border:2px solid #000} .back h5 { font-size: 4em; color: #f2050b; ...
- SASS学习笔记2 —— 语法
sass有两种后缀名文件:一种后缀名为sass,不使用大括号和分号:另一种是scss文件,这种和我们平时写的css文件格式差不多,使用大括号和分号.在此也建议使用后缀名为scss的文件,以避免sass ...
- ios基础篇(二)——UIImageView的常见用法
UIImageView是在界面上显示图片的一个控件,在UIImageView中显示图片的话应该首先把图片加载到UIImage中,然后通过其他方式使用该UIImage. 创建UIImageView有两种 ...
- GridView72变 控件
快速预览:GridView 无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单 DropDownList结合GridView和CheckBox结 ...
- Jquery异步提交$.ajax的使用
function test(){ var myEntity=new Object(); myEntity.pro1="xxx"; myEntity.pro2=10; $.ajax( ...
- ASP.NET-【Excel】-将Excel中的数据批量加载到SQLserver数据库
用到了一个SqlBulkCopy的类 核心代码分析 代码我还没有测试过 string excelConnectionString = string.Format("Provider=Micr ...
- 闲聊CSS之关于clearfix--清除浮动[转]
.clearfix:after { content: " "; display: block; clear: both; height:; } .clearfix { zoom:; ...
- CENTOS 修改MYSQL文件到内存盘
# 必须说明的是: # 0 内存盘的特性是断电就丢数据. # 1 对数据时效性要求高的自己做主从 # 2 重启or关机必须导出数据和开机加载数据. # 3 最好弄个脚本 开关机自己调用. # 4 简单 ...