10657 2024. 04. 07 19:02:29 999 Nagysebességű vasút cpp17 Hibás válasz 0/100 508ms 29368 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;
		proc2[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[b]+disE[a]+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;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1808 KiB
2 Elfogadva 3ms 2008 KiB
subtask2 0/35
3 Hibás válasz 4ms 2476 KiB
4 Hibás válasz 4ms 2812 KiB
5 Elfogadva 4ms 2680 KiB
6 Elfogadva 4ms 2908 KiB
7 Elfogadva 4ms 2848 KiB
8 Hibás válasz 4ms 3128 KiB
subtask3 0/30
9 Elfogadva 129ms 15224 KiB
10 Elfogadva 129ms 15316 KiB
11 Elfogadva 128ms 15228 KiB
12 Elfogadva 128ms 15464 KiB
13 Elfogadva 129ms 15568 KiB
14 Hibás válasz 131ms 15660 KiB
subtask4 0/35
15 Hibás válasz 499ms 29032 KiB
16 Hibás válasz 508ms 29208 KiB
17 Hibás válasz 492ms 29368 KiB
18 Hibás válasz 495ms 29252 KiB
19 Elfogadva 488ms 29204 KiB
20 Elfogadva 507ms 29356 KiB
21 Elfogadva 481ms 29284 KiB
22 Elfogadva 481ms 29280 KiB
23 Elfogadva 486ms 29276 KiB
24 Hibás válasz 259ms 20648 KiB
25 Elfogadva 128ms 16224 KiB
26 Elfogadva 128ms 16320 KiB
27 Hibás válasz 130ms 16412 KiB