zoukankan      html  css  js  c++  java
  • 解题报告:luogu P1613

    题目链接:P1613 跑路
    二进制的神奇应用。
    考虑 (dis_{i,j})在为 (2^s) 时存在,意味着存在断点 (k) 满足 (dis_{i,k})(dis_{k,j})(2^{s-1})时存在,我们根据这个东西进行递推。
    然后处理出所有可行路线,进行 (floyd) 即可(当然 (dij)(SPFA) 啥的都行。
    又没做出来,(qwq)......

    (Code):

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    
    #define read(x) scanf("%d",&x)
    #define ll long long
    #define inf 1ll<<60
    
    int n,m,l,r;
    ll dis[55][55];
    int minx[55][55][64];
    
    int main()
    {
    	read(n),read(m);
    	for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) dis[i][j]=inf;
    	for(int i=1;i<=m;i++) read(l),read(r),dis[l][r]=1,minx[l][r][0]=1;
    	for(int s=1;s<=64;s++)
    	{
    		for(int k=1;k<=n;k++)
    		{
    			for(int i=1;i<=n;i++)
    			{
    				for(int j=1;j<=n;j++) if(minx[i][k][s-1]&&minx[k][j][s-1]) minx[i][j][s]=1,dis[i][j]=1;
    			}
    		}
    	}
    	for(int k=1;k<=n;k++)
    	{
    		for(int i=1;i<=n;i++)
    		{
    			for(int j=1;j<=n;j++) dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
    		}
    	}
    	printf("%d
    ",dis[1][n]);
    	return 0;
    }
    
  • 相关阅读:
    时间戳计算
    .NET/C#/Oracle数据库操作类
    memcached安装及.NET中的Memcached.ClientLibrary使用
    C# Redis
    Jmeter教程 简单的压力测试
    Elasticsearch查询类型
    Windows 如何查看本地端口被进程占用的情况?
    Log4net 配置
    NLog 配置
    RPC原理
  • 原文地址:https://www.cnblogs.com/tlx-blog/p/12728177.html
Copyright © 2011-2022 走看看