106542024-04-07 18:58:15999Nagysebességű vasútcpp17Wrong answer 0/100564ms29864 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
#include <queue>
using namespace std;

int main() {
	int n,m;cin>>n>>m;
	vector<vector<pair<int,int>>> v(n);
	for(int i = 0;i<m;i++){
		int a,b,c;
		cin>>a>>b>>c;
		v[a].push_back({b,c});
		v[b].push_back({a,c});
	}
	vector<int> disS(n,INT_MAX),disE(n,INT_MAX);
	priority_queue<pair<int, int>> q;
	disS[0]=0;
	disE[n-1]=0;
	q.push({0,0});
	vector<bool> proc1(n),proc2(n);
	while(!q.empty()){
		int a=q.top().second;
		q.pop();
		if(proc1[a])continue;
		proc1[a]=true;
		for(auto u:v[a]){
			int b=u.first,w=u.second;
			if(disS[b]>disS[a]+w){
				disS[b]=disS[a]+w;
				q.push({-disS[b],b});
			}
		}
	}
	q.push({0,n-1});
	while(!q.empty()){
		int a=q.top().second;
		q.pop();
		if(proc2[a])continue;
		proc1[a]=true;
		for(auto u:v[a]){
			int b=u.first,w=u.second;
			if(disE[b]>disE[a]+w){
				disE[b]=disE[a]+w;
				q.push({-disE[b],b});
			}
		}
	}
	int ans=INT_MAX;
	for(int i = 0;i<n;i++){
		for(auto u : v[i]){
			int a=i,b=u.first,c=u.second;
			if(disS[a]+disE[b]+c>disS[n-1]){
				if(disS[a]+disE[b]+c-disS[n-1]+1<c){//cout<<a<<' '<<b<<endl;
					ans=min(ans,disS[a]+disE[b]+c-disS[n-1]+1);
				}
			}
			if(disS[b]+disE[a]+c>disS[n-1]){
				if(disS[a]+disE[b]+c-disS[n-1]+1<c){//cout<<a<<' '<<b<<endl;
					ans=min(ans,disS[b]+disE[a]+c-disS[n-1]+1);
				}
			}
		}
	}cout<<(ans==INT_MAX?-1:ans)<<endl;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1812 KiB
2Wrong answer3ms2056 KiB
subtask20/35
3Wrong answer4ms2536 KiB
4Wrong answer4ms2752 KiB
5Wrong answer4ms2892 KiB
6Wrong answer4ms3356 KiB
7Wrong answer4ms3164 KiB
8Wrong answer4ms3168 KiB
subtask30/30
9Wrong answer130ms15420 KiB
10Wrong answer128ms15532 KiB
11Wrong answer128ms15748 KiB
12Wrong answer127ms15828 KiB
13Wrong answer128ms15916 KiB
14Wrong answer133ms15960 KiB
subtask40/35
15Wrong answer564ms29556 KiB
16Wrong answer537ms29400 KiB
17Wrong answer550ms29356 KiB
18Wrong answer529ms29656 KiB
19Wrong answer505ms29624 KiB
20Wrong answer518ms29624 KiB
21Wrong answer495ms29532 KiB
22Wrong answer514ms29784 KiB
23Wrong answer508ms29864 KiB
24Wrong answer261ms20964 KiB
25Wrong answer129ms16720 KiB
26Wrong answer128ms16924 KiB
27Wrong answer133ms16844 KiB