社区讨论

80tps求调

P1613跑路参与者 1已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@m6a683vj
此快照首次捕获于
2025/01/24 10:57
去年
此快照最后确认于
2025/11/04 10:46
4 个月前
查看原帖
CPP
#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

回复

1 条回复,欢迎继续交流。

正在加载回复...