P1613 跑路

题目描述

小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零。可是小A偏偏又有赖床的坏毛病。于是为了保住自己的工资,小A买了一个十分牛B的空间跑路器,每秒钟可以跑2^k千米(k是任意自然数)。当然,这个机器是用longint存的,所以总跑路长度不能超过maxlongint千米。小A的家到公司的路可以看做一个有向图,小A家为点1,公司为点n,每条边长度均为一千米。小A想每天能醒地尽量晚,所以让你帮他算算,他最少需要几秒才能到公司。数据保证1到n至少有一条路径。

输入输出格式

输入格式:

第一行两个整数n,m,表示点的个数和边的个数。

接下来m行每行两个数字u,v,表示一条u到v的边。

输出格式:

一行一个数字,表示到公司的最少秒数。

输入输出样例

输入样例#1:

4 4
1 1
1 2
2 3
3 4
输出样例#1:

1

说明

【样例解释】

1->1->2->3->4,总路径长度为4千米,直接使用一次跑路器即可。

【数据范围】

50%的数据满足最优解路径长度<=1000;

100%的数据满足n<=50,m<=10000,最优解路径长度<=maxlongint。

/*
首先2^k显然是倍增
然后就是找到达终点的路径中最少跳几次2^k
思路很巧妙 首先建图的时候预处理这个点跳2^0能到达的点
然后继续处理这个点跳2^k能到的点,能到就连一条边权为一的边
最后 最短路就行了
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 100 using namespace std;
int f[maxn][][maxn],g[maxn][maxn];
int n,m,x,y; inline int init()
{
int x=,f=;char c=getchar();
while(c>''||c<''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
} int main()
{
n=init();m=init();
memset(g,/,sizeof g);//别忘记初始化
for(int i=;i<=m;i++)//打成了<=n,WA了好几遍...
{
x=init();y=init();
f[x][][y]=;
g[x][y]=;
}
for(int k=;k<=;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
if(f[i][k-][j])
for(int l=;l<=n;l++)
if(f[j][k-][l])
f[i][k][l]=,g[i][l]=;
}
for(int k=;k<=n;k++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(g[i][k]+g[k][j]<g[i][j])
g[i][j]=g[i][k]+g[k][j];
printf("%d\n",g[][n]);
return ;
}

最新文章

  1. django,python,svn_web
  2. 破解入门【OllyDebug爆破程序】
  3. FtpWebRequest FTP异步下载、异步上传文件
  4. shell编程之数学运算
  5. shell--学习 sed
  6. 解决Toad for Oracle显示乱码问题
  7. 梯田(dfs)
  8. [LeetCode]题解(python):115-Distinct Subsequences
  9. SVN的revert和update命令的区别
  10. 201521123114 《Java程序设计》第6周学习总结
  11. MapReduce中Combiner规约的作用以及不能作为MR标配的原因
  12. 【转2】Appium 1.6.3 在Xcode 8 (真机)测试环境搭建 经验总结
  13. pm am 12小时格式化
  14. VB.NET版机房收费系统---外观层如何写
  15. XML自学笔记
  16. 去掉字符空格js
  17. 【腾讯Bugly干货分享】Android 插件技术实战总结
  18. js回顾
  19. K-Means算法的10个有趣用例
  20. P2093 零件分组【贪心算法练习题】

热门文章

  1. 服务器的部署与Web项目的发布
  2. Window下的———TOMCAT环境的配置
  3. MyBatis 中 resultMap 详解
  4. 3.6.5 空串与Null串
  5. 3.3.5 boolean类型
  6. 47. Spring Boot发送邮件【从零开始学Spring Boot】
  7. HDU 1114 完全背包问题的转化
  8. [luoguP2659] 美丽的序列(单调栈)
  9. sdibt 1251 进化树问题
  10. 《Linux内核分析》MOOC课程