Submission #103441

# Submission time Handle Problem Language Result Execution time Memory
103441 2019-03-30T17:48:21 Z SecretAgent007 Sightseeing (NOI14_sightseeing) C++17
15 / 25
2995 ms 263168 KB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define double long double

const int INF = 9223372036854775807;

vector< vector< pair< int, int > > > Graph;

vector< int > U;

vector< int > dist;

int getParents(int a){
    if(U[a] == a) return a;
    else return U[a] = getParents(U[a]);
}

void Union(int a, int b){
    U[getParents(a)] = getParents(b);
}

void dfs(int node, int last){
    for(auto a : Graph[node]){
        if(a.first == last) continue;
        dist[a.first] = min(a.second, dist[node]);
        dfs(a.first, node);
    }
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);

    int v, e, q;
    cin >> v >> e >> q;

    Graph.resize(v+1);
    U.resize(v+1);
    dist.resize(v+1, INF);

    vector< tuple<int, int, int> > ve(e);

    for(int i = 0; i <= v; i++) U[i] = i;

    for(int i = 0; i < e ; i++){
        int a, b, c;
        cin >> a >> b >> c;
        ve[i] = make_tuple(c,a,b);
    }

    sort(ve.begin(), ve.end(), greater<tuple<int, int, int> >());

    for(int i = 0; i < e; i++){
        auto tup = ve[i];

        int c = get<0>(tup);
        int a = get<1>(tup);
        int b = get<2>(tup);

        if(getParents(a) == getParents(b)) continue;
        else{
            Union(a,b);
            Graph[a].push_back(make_pair(b,c));
            Graph[b].push_back(make_pair(a,c));
        }
    }

    dfs(1,-1);

    while(q--){
        int a;
        cin >> a;
        cout << dist[a] << '\n';
    }
}
/*
4 4 2
1 2 10
1 3 30
2 4 20
3 4 5
3
4
*/
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 3 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 512 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 44 ms 4836 KB Output is correct
2 Correct 48 ms 4408 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2045 ms 107000 KB Output is correct
2 Runtime error 2995 ms 263168 KB Memory limit exceeded (if you are sure your verdict is not MLE, please contact us)