Submission #1268135

#TimeUsernameProblemLanguageResultExecution timeMemory
126813529ChuManhTichSightseeing (NOI14_sightseeing)C++20
15 / 25
150 ms22000 KiB
#include<bits/stdc++.h>
using namespace std;

#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define ii pair<int,int>
#define fi first
#define se second

const int maxn = 5e5 + 11;
int n, m, q;

struct Edge {
    int u,v,w;
    bool operator < (Edge &o) {
        return w > o.w;
    }
} edge[maxn];

struct DSU {
    int p[maxn], sz[maxn];
    void init(int n) {
        FOR(i,1,n) p[i]=i, sz[i]=1;
    }
    int find_set(int u) {
        return (u==p[u])?u:p[u]=find_set(p[u]);
    }
    bool united(int u,int v) {
        u=find_set(u); v=find_set(v);
        if(u==v) return false;
        if(sz[u]<sz[v]) swap(u,v);
        sz[u]+=sz[v]; p[v]=u;
        return true;
    }
};

vector<ii> adj[maxn];
int res[maxn];

void bfs(int start) {
    queue<int> q;
    res[start] = INT_MAX;
    q.push(start);
    while(!q.empty()) {
        int u=q.front(); q.pop();
        for(auto [v,w] : adj[u]) {
            if(res[v]==-1) { // chưa thăm
                res[v] = min(res[u], w);
                q.push(v);
            }
        }
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> n >> m >> q;
    FOR(i,1,m) {
        int u,v,w; cin>>u>>v>>w;
        edge[i]={u,v,w};
    }

    DSU dsu; dsu.init(n);
    sort(edge+1, edge+m+1);

    int cnt=0;
    FOR(i,1,m) {
        if(cnt>=n-1) break;
        int u=edge[i].u, v=edge[i].v, w=edge[i].w;
        if(dsu.united(u,v)) {
            cnt++;
            adj[u].push_back({v,w});
            adj[v].push_back({u,w});
        }
    }

    FOR(i,1,n) res[i] = -1;
    bfs(1);

    while(q--) {
        int x; cin >> x;
        cout << res[x] << "\n";
    }
    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...