题目大意:一个有向图,n(<=100)个点求一条长度>=m(<=10^18)的路径最少经过几条边。

  一开始以为是矩乘,蓝鹅当时还没开始写,所以好像给CYC安利错了嘿嘿嘿QWQ

  第一眼看到这题就想到了某题(戳我),最后只想出一半。。。

  倍增floyd:f[p][i][j]表示走了2^p条边,从i到j的最长路径,然后则有:f[p][i][j]=max(f[p][i][j],f[p-1][i][k]+f[p-1][k][j]);

  当跑倍增floyd的时候,1到某个点路径长度>=m则记录p后break。但是这个p只能告诉你答案在2^(p-1)~2^p之间,那到底怎么统计最少经过几条边儿呢?这就是我当时没想出来的>_<。。。

  看了题解,ciao,sb了QAQ。。。把这个p按高位到低位贪心,新增一个g[i][j]数组表示当前i到j的最长路径,如果1到某个点长度>=m就不记录,否则每次用f[p][i][k]+g[k][j]来更新g数组,并给ans+=1<<p,这样就可以统计出路径<m的答案了,这个时候随便走一步就>=m,所以输出ans+1就行辣!

  初始化-233333333不够小害我WA了好几次QAQ【于是我就改成了-2333333333333333333嘿嘿嘿

  然后还学会了新姿势!

try
{
throw(true);
}catch(bool){}

代码如下:

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#define ll long long
using namespace std;
int n,p,T;
ll f[][][],h[][],g[][],ans,m,x;
int main()
{
scanf("%d",&T);
while(T--)
{
ans=;
scanf("%d%lld",&n,&m);
memset(f,0xef,sizeof(f));
memset(g,0xef,sizeof(g));
for(int i=;i<=n;i++)g[i][i]=;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
scanf("%lld",&x),f[][i][j]=x?x:-;
try
{
for(p=;p<=;p++)
for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
f[p][i][j]=max(f[p][i][j],f[p-][i][k]+f[p-][k][j]);
if(i==&&f[p][i][j]>=m)throw(true);
}
}catch(bool){}
while(p--)
{
for(int i=;i<=n;i++)for(int j=;j<=n;j++)if(i==j)h[i][j]=;else h[i][j]=-;
try
{
for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
h[i][j]=max(h[i][j],f[p][i][k]+g[k][j]);
if(i==&&h[i][j]>=m)throw(true);
}
memcpy(g,h,sizeof(g));
ans+=1ll<<p;
}catch(bool){}
}
printf("%lld\n",ans+);
}
}

最新文章

  1. 关于Finereport移动端报表二次开发的两个小例子
  2. 为什么一个类的全局变量默认以m开头?
  3. Java注解教程:自定义注解示例,利用反射进行解析
  4. Browser detect
  5. jsp中获取当前文件路径
  6. IE无法获得cookie,ie不支持cookie的解决办法,火狐支持
  7. 螺旋打印2D数组
  8. Cocos2d-x 实战
  9. spring面向切面编程示例(xml配置形式vs@注解形式)
  10. X86-32位架构的CPU是不是内存只能到4G
  11. Github怎么写README
  12. zeebe 集成elasticsearch exporter
  13. nginx做yum源
  14. Java程序设计教程(第2版)阅读总结
  15. JVM-常用内存调优参数总结
  16. elementUI 表格设置表头样式
  17. docker swarm英文文档学习-4-swarm模式如何运行
  18. P1272 重建道路
  19. Java 浅析 Thread.join()
  20. leetcode hashmap

热门文章

  1. 「日常训练」Two Substrings(Codeforces Round 306 Div.2 A)
  2. RAP2环境搭建整理(超详细)
  3. 【第四章】MySQL数据库的基本操作:数据库、表的创建插入查看
  4. mac上golang编译出现clang错误
  5. qt qchart缩放后坐标轴间隔取整
  6. 【转】Hbuilder MUI 页面刷新及页面传值问题
  7. js单行写一个评级组件
  8. 《剑指Offer》题二十一~题三十
  9. 11.24Daily Scrum
  10. Oracle ORA-12541:TNS:no listener错误解决方法 (转)