题目链接

Solution

发现 \(n\) 只有 \(50\), 可以用 \(floyd\) .

然后 \(w[i][j][l]\) 代表 \(i\) 到 \(j\) 是否存在 \(2^l\) 长的路.

四重循环,枚举即可.如果有则更新 \(dis[i][j]\) 为 \(1\) .

然后再跑 \(floyd\) 即可.

不过注意枚举 \(l\) 的这一层要大一点,到 \(50\) 左右.

Code

#include<bits/stdc++.h>
typedef int _int;
#define int long long
using namespace std;
int w[51][51][51];
int n,m,dis[51][51]; _int main()
{
scanf("%lld%lld",&n,&m);
memset(dis,0x3f,sizeof(dis));
for(int i=1;i<=m;i++)
{
int x,y;
scanf("%lld%lld",&x,&y);
w[x][y][0]=1;
dis[x][y]=1;
} for(int l=1;l<=50;l++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
if(i!=j&&j!=k&&i!=j)
if(w[i][k][l-1]&&w[k][j][l-1])
w[i][j][l]=1,dis[i][j]=1; for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
if(i!=j&&j!=k&&i!=j)
dis[i][j]=min(1ll*dis[i][j],1ll*dis[i][k]+dis[k][j]); cout<<dis[1][n]<<endl;
return 0;
}

最新文章

  1. 开启基本数据结构和算法之路--初识Graphviz
  2. 项目vue2.0仿外卖APP(五)
  3. No module named migrate.versioning
  4. java 24 - 2 GUI之监听机制和适配器改进窗口关闭
  5. [原]Android打包之Gradle打包
  6. 经典SQL语句大全.doc
  7. Ants(思维)
  8. Web APIs 基于令牌TOKEN验证的实现
  9. sed正则表达式
  10. php学习之路:WSDL详细解释(两)
  11. 使用JS动态修改网页body的背景色
  12. JAVA之旅(十五)——多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止
  13. [Swift]LeetCode916.单词子集 | Word Subsets
  14. react native环境搭建与生命周期
  15. [日常] Go语言圣经--结构体,JSON习题
  16. 【QT5】 第一个hello world 程序
  17. CI/CD系列
  18. js &amp; get recursive ids
  19. Spring4笔记12--SSH整合3--Spring与Struts2整合
  20. HDU 5536--Chip Factory(暴力)

热门文章

  1. MySQL选择的执行计划性能底下原因分析--实战案例分析
  2. 【操作系统作业-lab4】 linux 多线程编程和调度器
  3. 交换机基础设置之vtp管理vlan设置
  4. 初试PHP连接sql server
  5. linux上面安装svn步骤
  6. Python 编码格式的使用
  7. iOS-重构微博cell模型
  8. 牛客暑假多校第一场J-Different Integers
  9. ISCSI网络存储
  10. CenOS 配置C/C++语言