题意:给定一个带权有向图,求点数最小的负环。

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.

最新文章

  1. 谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo
  2. Loadrunner代理录制设置
  3. 【转】C# GET 和 SET作用
  4. malloc杀内存于无形
  5. Delphi结构体的扩展,可以自动初始化,反初始化,自定义拷贝函数.
  6. 加密解密(2)*客户端,服务器,CA(Certificate Authority),公钥,私钥,证书,签名,验证
  7. mysql DBI 事务控制
  8. Replication-删除发布备注
  9. Python系列教程(一):简介
  10. Python 3.6 中文手册——前言
  11. 基于springboot的SSM框架实现返回easyui-tree所需要数据
  12. 安全圈玩起了直播,&quot;学霸”带你玩转CTF
  13. [Docker] Benefits of Multi-stage Builds
  14. iot-hub物管理bug
  15. jquery.cropper 裁剪图片上传
  16. 初入码田--ASP.NET MVC4 Web应用之创建一个空白的MVC应用程序
  17. bzoj 1101 [POI2007]Zap——反演
  18. easy-ui grid里的toobar按钮隐藏与显示
  19. 十四、css动画基础知识
  20. kubernetes社区项目生态概览

热门文章

  1. 关于c头文件的使用的小记录
  2. 421 Maximum XOR of Two Numbers in an Array 数组中两个数的最大异或值
  3. (六)Mybatis总结之延迟加载
  4. CSS3实现边框线条动画特效
  5. 原生开发之css样式问题(持续更新)
  6. android中使用图文并茂的按钮
  7. Objective -C Memory Management 内存管理 第一部分
  8. 解决windows下rstudio安装playwith包报错问题
  9. SQL Server性能调优——报表数据库与业务数据库分离
  10. struts2的action是线程安全的,struts1的action不是线程安全的真正原因