25分求调
查看原帖
25分求调
901929
CYS66楼主2024/10/5 21:53
//https://www.luogu.com.cn/problem/P9751
#include<bits/stdc++.h>
using namespace std;
int n,m,k,u[20005],v[20005],a[20005],road[10005][10005];
long long dp[10005];
int main(){
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++){
		dp[i]=9e18;
		for(int j=1;j<=n;j++){
			road[i][j]=-1;
		}
	}
	for(int i=1;i<=m;i++){
		cin>>u[i]>>v[i]>>a[i];
		road[u[i]][v[i]]=a[i];
	}
	dp[1]=k;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(i==j){
				continue;
			}
			if(road[i][j]!=-1){
				if(dp[i]>=road[i][j]){
					dp[j]=min(dp[j],dp[i]+1);
				}else{
					dp[j]=min(dp[j],(long long)road[i][j]+1);
				}
			}
		}
	}
	if(dp[n]==9e18){
		cout<<"-1";
	}else{
		cout<<ceil(1.0*dp[n]/k)*k;
	}
	return 0;
}
2024/10/5 21:53
加载中...