当前位置: 首页 > news >正文

P3199 [HNOI2009] 最小圈

点击查看代码
#include<bits/stdc++.h>
using namespace std;const int N=3010,M=10010;
int h[N],e[M],ne[M],idx;
double w[M];
int n,m;
double dist[N];
int cnt[N],st[N];void add(int u,int v,double c)
{e[idx]=v,w[idx]=c,ne[idx]=h[u],h[u]=idx++;
}bool check(double mid)
{memset(dist,0x3f,sizeof dist);queue<int> q;for(int i=1;i<=n;i++){q.push(i);cnt[i]=0;st[i]=true;dist[i]=0;}while(q.size()){int t=q.front();q.pop();st[t]=false;for(int i=h[t];~i;i=ne[i]){int j=e[i];if(dist[j]>dist[t]+w[i]-mid){dist[j]=dist[t]+w[i]-mid;cnt[j]=cnt[t]+1;if(cnt[j]>=n) return true;if(!st[j]){q.push(j);st[j]=true;}}}}return false;
}int main()
{ios::sync_with_stdio(0),cin.tie(0);cin>>n>>m;memset(h,-1,sizeof h);double min_w=2e9,max_w=-2e9;while(m--){int i,j;double c;cin>>i>>j>>c;add(i,j,c);min_w=min(min_w,c);max_w=max(max_w,c);}double l=min_w,r=max_w;while(r-l>1e-9){double mid=l+(r-l)/2;if(check(mid)){r=mid;}else{l=mid;}}cout<<fixed<<setprecision(8)<<r<<endl;return 0;
}
http://www.jsqmd.com/news/409345/

相关文章:

  • BiliPai 6.1.3 | B站开源第三方应用,纯净无广流畅
  • TCP三次握手总结
  • 随笔 6
  • 表格速查手册:Burp Suite 高频功能与快捷键(收藏级)
  • 题解:AcWing 891 Nim游戏
  • Django Cookie/Session
  • MCP文献综述:AI与外部世界的标准化交互桥梁
  • AngularJS Scope(作用域)
  • 科普文___三分钟带你看懂AI大模型(图文教程)
  • 实战排坑文:Burp Suite 抓包失败/无法抓HTTPS/爆破慢(问答式)
  • TF-IDF:从公式直觉到工程实现
  • 20260224_220210_非专业也能看懂的AI大模型工作原理!
  • 从DeepSeek到Seedance_2.0,国产大模型杀疯
  • C 标准库 - <string.h>
  • 题解:AcWing 890 能被整除的数
  • 大小端序存储
  • HyperRAG实战教程(非常详细),超图多跳推理从入门到精通,收藏这一篇就够了!
  • Tauri 中实现自更新(Auto Update)
  • 【DREAMVFIA开源】量子云平台构建:服务化量子计算资源管理
  • MCP Apps深度解读教程(非常详细),重构Web应用从入门到精通,收藏这一篇就够了!
  • 题解:AcWing 889 满足条件的01序列
  • .NET 11 预览版1:CoreCLR 在 WebAssembly 上的全面集成与性能突破
  • 题解:AcWing 888 求组合数 IV
  • 题解:AcWing 887 求组合数 III
  • Java 方法引用
  • Java基础(下)之Stream
  • Java基础(下)之方法引用
  • 题解:AcWing 886 求组合数 II
  • 题解:AcWing 885 求组合数 I
  • 功能炸裂!推荐一款低代码数据大屏可视化系统,内置丰富模版,支持拖拽构建炫酷大屏