80tps求调
  • 板块P1613 跑路
  • 楼主FF_pigeon
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/24 10:55
  • 上次更新2025/1/24 14:42:41
查看原帖
80tps求调
615236
FF_pigeon楼主2025/1/24 10:55
#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define rep(x,a,b) for(int x=(a);x<=(b);++x)
#define rop(x,a,b) for(int x=(a);x<(b);++x)
#define per(x,a,b) for(int x=(a);x>=(b);--x)
#define pb push_back
using namespace std;

const int N = 60;

int read(){
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
	return x*f;
}
ll llread(){
	ll x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
	return x*f;
}

int n, m, head[N], ecnt;
int f[N][N][55], d[N][N];
struct Edge{
	int to, nxt;
}e[N<<1];
void addedge( int u , int v ){
	e[++ecnt] = (Edge){v,head[u]};
	head[u] = ecnt;
}
int main(){
	n = read();m = read();
    memset(d,0x3f,sizeof(d));
	for( int i = 1, u, v ; i <= m ; ++i ){
		u = read();v = read();
		addedge(u,v);
        f[u][v][0] = 1;    
        d[u][v] = 1;
	}
    for( int p = 1 ; p <= 55 ; ++p ){
	    for( int i = 1 ; i <= n ; ++i ){
		    for( int j = 1 ; j <= n ; ++j ){
			    for( int k = 1 ; k <= n ; ++k ){
                        if( f[i][k][p-1] && f[k][j][p-1] ){
                            f[i][j][p] = 1;
                            d[i][j] = 1;
                        }
				    }
		    	}
	    	}
	    }
    		for( int j = 1 ; j <= n ; ++j ){
    	for( int i = 1 ; i <= n ; ++i ){
    for( int k = 1 ; k <= n ; ++k ){
                    d[i][j] = min(d[i][j],d[i][k] + d[k][j]);
            }
        }
    }
    cout << d[1][n] << "\n";
	return 0;
}

为啥就是少一呢 WA on #2, #10 记录https://www.luogu.com.cn/record/200280605

2025/1/24 10:55
加载中...