• 解题报告: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;
    }
    
  • 相关阅读:
    校赛writeup
    memory-300——Jarvis OJ
    校赛_warmup_pwn
    sctf
    iscc-pwn1
    level3-64——Jarvis OJ
    JarvisOJ——level2
    JarvisOJ——guestbook
    Javris oj——level0
    linux 服务器 tomcat环境部署出错 重启
  • 原文地址:https://www.cnblogs.com/tlx-blog/p/12728177.html
Copyright © 2020-2023  润新知