bzoj2165 -- 倍增floyd
来源:互联网 发布:手机虚拟试衣软件 编辑:程序博客网 时间:2024/05/29 03:36
题意:给定一张有向图,求图中从1开始长度>=m且边数最少的路径经过的边数。bzoj2165
考虑倍增floyd。
令f[p][i][j]表示经过2p条边从i到j的最大长度。
那么f[p][i][j]=max{f[p-1][i][k]+f[p-1][k][j]}
令g[i][j]表示当前答案从i到j的最大长度。
求答案时从大到小枚举每个二进制位,更新g,若不存在从1开始长度>=m的路径,这一位就是1。
代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 #define INF (1ll<<62) 7 #define N 110 8 #define M 70 9 #define ll long long10 ll m,f[M][N][N],A[N][N],t[N][N],Ans;11 int i,j,k,n,p,T;12 inline ll Max(ll x,ll y){return x<y?y:x;}13 inline void Init(){14 memset(f,0xef,sizeof(f));15 memset(A,0xef,sizeof(A));16 Ans=0;17 }18 int main(){19 scanf("%d",&T);20 while(T--){21 scanf("%d%lld",&n,&m);22 Init();23 for(i=1;i<=n;i++)24 for(j=1;j<=n;j++){25 scanf("%lld",&f[0][i][j]);26 if(f[0][i][j]==0)f[0][i][j]=-INF;27 }28 for(p=1;1ll<<p<=m;p++){29 for(k=1;k<=n;k++){30 for(i=1;i<=n;i++){31 for(j=1;j<=n;j++){32 f[p][i][j]=Max(f[p][i][j],f[p-1][i][k]+f[p-1][k][j]);33 if(i==1&&f[p][i][j]>=m)break;34 }35 if(j<=n)break;36 }37 if(i<=n)break;38 }39 if(k<=n)break;40 }41 for(i=1;i<=n;i++)A[i][i]=0;42 while(p--){43 memset(t,0xef,sizeof(t));44 for(k=1;k<=n;k++){45 for(i=1;i<=n;i++){46 for(j=1;j<=n;j++){47 t[i][j]=Max(t[i][j],f[p][i][k]+A[k][j]);48 if(i==1&&t[i][j]>=m)break;49 }50 if(j<=n)break;51 }52 if(i<=n)break;53 }54 if(k>n){55 memcpy(A,t,sizeof(A));56 Ans+=1ll<<p;57 }58 }59 printf("%lld\n",Ans+1);60 }61 return 0;62 }
阅读全文
0 0
- bzoj2165 -- 倍增floyd
- 倍增Floyd
- POJ 3613 floyd+倍增
- 2165: 大楼 倍增floyd
- bzoj 1706 倍增floyd
- poj 3613(floyd倍增)
- [POJ3613]Cow Relays && Floyd倍增
- BZOJ 2165 大楼 倍增Floyd
- BZOJ 2165 大楼 倍增Floyd
- [倍增 floyd] BZOJ 2165 大楼
- 跑路 洛谷1613 倍增 floyd
- bzoj 2165: 大楼 倍增floyd
- 洛谷1613 跑路【倍增+floyd】
- POJ--3613[Cow Relays] floyd 倍增法
- POJ--3613[Cow Relays] floyd 倍增法
- BZOJ 2306 Ctsc2011 幸福路径 倍增Floyd
- BZOJ 2085 Poi2010 Hamsters Hash+倍增Floyd
- BZOJ 2085 [Poi2010]Hamsters Hash+倍增floyd
- bzoj4712 -- 树链剖分
- SpringMVC用PropertyPlaceholderConfigurer读取配置文件
- Oracle数字函数
- bzoj2588 -- 树链剖分+主席树
- bzoj4881 [ Lydsy2017年5月月赛 ] -- 二分图染色+线段树
- bzoj2165 -- 倍增floyd
- bzoj3626 [ LNOI2014 ] -- 树链剖分
- POJ2104_K-th Number_归并树|二分 ||平方分割的分桶法|二分
- SVN导下来Maven工程就报错 org.apache.ibatis.binding.BindingException
- bzoj1857 [ SCOI2010 ] -- 三分套三分
- WampServer 中Apache配置别名访问
- 三国历史脉络图
- flex布局(4)
- codeforces805F Expected diameter of a tree