【ZJOI2017 Round1练习&BZOJ4773】D3T1 cycle(最小负环,倍增)
2024-08-30 20:22:21
题意:给定一个带权有向图,求点数最小的负环。
2 ⩽ n ⩽ 300
0 ⩽ m ⩽ n(n - 1)
1 ⩽ ui,vi ⩽ n
abs(w[j])<= 10^4
思路:倍增思想
设d[i,j,k]为走不多于2^i次步,从j走到k的最小权值和
显然d[i]可以由d[i-1]推出
f[i,j]表示当前走若干步后从i到j的最小权值和
从大到小枚举在原来的基础上再走不多于2^i步的结果
如果有负环就不用再走2^i步,将f复原
否则将j更新为走2^i步之后的数值,继续枚举
const oo=;
var d:array[..,..,..]of longint;
g,f:array[..,..]of longint;
n,m,i,j,k,t,ans,x,y,z:longint;
flag:boolean; function min(x,y:longint):longint;
begin
if x<y then exit(x);
exit(y);
end; begin
assign(input,'cycle.in'); reset(input);
assign(output,'cycle.out'); rewrite(output);
readln(n,m);
for i:= to n do
for j:= to n do
if i<>j then d[,i,j]:=oo;
for i:= to m do
begin
readln(x,y,z);
d[,x,y]:=min(d[,x,y],z);
end;
for t:= to do
begin
for i:= to n do
for j:= to n do
if i<>j then d[t,i,j]:=oo;
for i:= to n do
for j:= to n do
for k:= to n do d[t,i,k]:=min(d[t,i,k],d[t-,i,j]+d[t-,j,k]);
end;
for i:= to n do
for j:= to n do
if i<>j then f[i,j]:=oo;
for t:= downto do
begin
for i:= to n do
for j:= to n do g[i,j]:=f[i,j];
for i:= to n do
for j:= to n do
for k:= to n do f[i,k]:=min(f[i,k],g[i,j]+d[t,j,k]);
flag:=false;
for i:= to n do
if f[i,i]< then begin flag:=true; break; end;
if flag then
begin
for i:= to n do
for j:= to n do f[i,j]:=g[i,j];
end
else ans:=ans+(<<t);
end;
inc(ans);
if ans>n then writeln()
else writeln(ans); close(input);
close(output);
end.
最新文章
- 谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo
- Loadrunner代理录制设置
- 【转】C# GET 和 SET作用
- malloc杀内存于无形
- Delphi结构体的扩展,可以自动初始化,反初始化,自定义拷贝函数.
- 加密解密(2)*客户端,服务器,CA(Certificate Authority),公钥,私钥,证书,签名,验证
- mysql DBI 事务控制
- Replication-删除发布备注
- Python系列教程(一):简介
- Python 3.6 中文手册——前言
- 基于springboot的SSM框架实现返回easyui-tree所需要数据
- 安全圈玩起了直播,";学霸”带你玩转CTF
- [Docker] Benefits of Multi-stage Builds
- iot-hub物管理bug
- jquery.cropper 裁剪图片上传
- 初入码田--ASP.NET MVC4 Web应用之创建一个空白的MVC应用程序
- bzoj 1101 [POI2007]Zap——反演
- easy-ui grid里的toobar按钮隐藏与显示
- 十四、css动画基础知识
- kubernetes社区项目生态概览
热门文章
- 关于c头文件的使用的小记录
- 421 Maximum XOR of Two Numbers in an Array 数组中两个数的最大异或值
- (六)Mybatis总结之延迟加载
- CSS3实现边框线条动画特效
- 原生开发之css样式问题(持续更新)
- android中使用图文并茂的按钮
- Objective -C Memory Management 内存管理 第一部分
- 解决windows下rstudio安装playwith包报错问题
- SQL Server性能调优——报表数据库与业务数据库分离
- struts2的action是线程安全的,struts1的action不是线程安全的真正原因