106572024-04-07 19:02:29999Nagysebességű vasútcpp17Hibás válasz 0/100508ms29368 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1808 KiB
2Elfogadva3ms2008 KiB
subtask20/35
3Hibás válasz4ms2476 KiB
4Hibás válasz4ms2812 KiB
5Elfogadva4ms2680 KiB
6Elfogadva4ms2908 KiB
7Elfogadva4ms2848 KiB
8Hibás válasz4ms3128 KiB
subtask30/30
9Elfogadva129ms15224 KiB
10Elfogadva129ms15316 KiB
11Elfogadva128ms15228 KiB
12Elfogadva128ms15464 KiB
13Elfogadva129ms15568 KiB
14Hibás válasz131ms15660 KiB
subtask40/35
15Hibás válasz499ms29032 KiB
16Hibás válasz508ms29208 KiB
17Hibás válasz492ms29368 KiB
18Hibás válasz495ms29252 KiB
19Elfogadva488ms29204 KiB
20Elfogadva507ms29356 KiB
21Elfogadva481ms29284 KiB
22Elfogadva481ms29280 KiB
23Elfogadva486ms29276 KiB
24Hibás válasz259ms20648 KiB
25Elfogadva128ms16224 KiB
26Elfogadva128ms16320 KiB
27Hibás válasz130ms16412 KiB