제출 #1345712

#제출 시각아이디문제언어결과실행 시간메모리
1345712rahidilbayramliCommuter Pass (JOI18_commuter_pass)C++20
16 / 100
121 ms23200 KiB
#include<bits/stdc++.h>
#define ll long long
#define vl vector<ll>
#define pb push_back
#define sz(v) (ll)(v.size())
#define f first
#define s second
#define pll pair<ll, ll>
using namespace std;
const ll sz = 2e5+5;
vector<pll>g[sz];
ll vis[sz], dist[sz], vis2[sz];
vl par[sz];
void dijkstra(ll node, ll n)
{
    for(ll i = 0; i <= n; i++)
    {
        vis[i] = 0;
        dist[i] = 1000000000000000;
    }
    priority_queue<pll>pq;
    dist[node] = 0;
    pq.push({0, node});
    while(!pq.empty())
    {
        ll nd = pq.top().s;
        pq.pop();
        if(vis[nd])
            continue;
        vis[nd] = 1;
        for(auto [u, w] : g[nd])
        {
            if(dist[u] > dist[nd] + w)
            {
                par[u].clear();
                par[u].pb(nd);
                dist[u] = dist[nd] + w;
                pq.push({-dist[u], u});
            }
            else    if(dist[u] == dist[nd] + w)
                par[u].pb(nd);
        }
    }
}
void dfs(ll node)
{
    vis2[node] = 1;
    for(auto u : par[node])
    {
        if(vis2[u])
            continue;
        dfs(u);
    }
}
void solve()
{
    ll n, m, i, j;
    cin >> n >> m;
    ll s, t, u, v;
    cin >> s >> t;
    cin >> u >> v;
    for(i = 1; i <= m; i++)
    {
        ll x, y, z;
        cin >> x >> y >> z;
        g[x].pb({y, z});
        g[y].pb({x, z});
    }
    dijkstra(s, n);
    dfs(t);
    dijkstra(v, n);
    ll res = LLONG_MAX;
    for(i = 1; i <= n; i++)
    {
        if(vis2[i])
            res = min(res, dist[i]);
    }
    cout << res << "\n";
}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    ll tests = 1;
    //cin >> tests;
    while(tests--)
    {
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...