75pts WA on #1,2,8,9,10,21 求条
查看原帖
75pts WA on #1,2,8,9,10,21 求条
683531
zyc232008楼主2024/10/23 17:28
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
long long dis[10005];
bool vis[10005];
vector<long long>G[10005],ds[10005];
struct node {
  int u,d;
  bool operator>(const node& a)const{ return d>a.d; }
};
priority_queue<node,vector<node>,greater<node> >que;
void dij(){
	for(int i=1;i<=n;i++)dis[i]=1e10;
	que.push({1,0});
	dis[1]=0;
	while(!que.empty()){
		int u=que.top().u;
		que.pop();
		if(vis[u])continue;
		vis[u]=1;
		for(int i=0;i<G[u].size();i++){
			if(max(dis[u]+1,ds[u][i])<dis[G[u][i]]){
				dis[G[u][i]]=max(dis[u]+1,ds[u][i]);
				que.push({G[u][i],dis[G[u][i]]});
			}
		}
	}
}
int main(){
	cin>>n>>m>>k;
	while(m--){
		int u,v,l;
		cin>>u>>v>>l;
		G[u].push_back(v);
		ds[u].push_back(l);
	}
	dij();
	cout<<((dis[n]+k-1)/k)*k;
}
2024/10/23 17:28
加载中...