Submission #834093

#TimeUsernameProblemLanguageResultExecution timeMemory
834093vjudge1Commuter Pass (JOI18_commuter_pass)C++17
0 / 100
245 ms19392 KiB
#include <bits/stdc++.h>
using namespace std; 
#define pb push_back
#define ll long long

const ll INF = 1e18; 
ll D[100005]; 
ll D2[100005]; 
ll prevv[100005];
ll visited[100005]; 
ll tempp[100005]; 
vector<pair<ll, ll>> jalur[100005]; 

void priorityQueue(int jumlahKota, ll D[], ll start, ll prevv[])
{
	for(int i = 1; i <= jumlahKota; i++)
	{
    	D[i] = INF;	
    	visited[i] = 0; 
	}
    D[start] = 0;
    priority_queue<pair<ll, ll>,vector<pair<ll, ll>>,greater<pair<ll, ll>>> q;
    q.push({0,start});
    while(!q.empty())
    {
        pair<ll, ll> p = q.top();
        q.pop();
 
        ll u = p.second, dist = p.first;
//        if(dist > D[u]) continue;
        if(visited[u] == 1)continue; 
        visited[u] = 1; 
        for(pair<ll, ll> pr : jalur[u])
        {
//        	cout << pr.first << " " << pr.second << endl; 
            ll v = pr.first;
            ll next_dist = dist + pr.second;
 
            if(next_dist < D[v])
            {
                D[v] = next_dist;
                q.push({next_dist,v});
                prevv[v] = u; 
            }
        }
    }
}

int main()
{
	int jumlahKota, jumlahJalan, ibuMrit, ibuRat, asal, tujuan; 
	cin >> jumlahKota >> jumlahJalan; 
	cin >> ibuMrit >> ibuRat; 
	cin >> asal >> tujuan; 
	
	for(int i = 0; i < jumlahKota; i++)
	{
		D2[i] = 0; 
		D[i] = 0; 
		prevv[i] = -1; 
	}
	for(int i = 0; i < jumlahJalan; i++)
	{
		ll a, b, c; 
		cin >> a >> b >> c; 
		jalur[a].pb({b, c}); 
		jalur[b].pb({a, c}); 
	}

	priorityQueue(jumlahKota, D2, asal, tempp); 
	ll absres = D2[tujuan]; 

	cout << absres << endl;
	
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...