Submission #551099

#TimeUsernameProblemLanguageResultExecution timeMemory
551099inksamuraiReconstruction Project (JOI22_reconstruction)C++17
7 / 100
5050 ms6344 KiB
#include <bits/stdc++.h> using namespace std; #define rep(i,n) for(int i=0;i<n;i++) #define rng(i,x,n) for(int i=x;i<n;i++) #define per(i,n) for(int i=n-1;i>=0;i--) #define fi first #define se second #define pb push_back #define sz(a) (int)a.size() #define vec(...) vector<__VA_ARGS__> #define _3xxEYjy ios::sync_with_stdio(0),cin.tie(0) typedef long long ll; using pii=pair<int,int>; using vi=vector<int>; void print(){cout<<'\n';} template<class h,class...t> void print(const h&v,const t&...u){cout<<v<<' ',print(u...);} // e struct dsu{ int n,cmps; vector<int> par,siz; dsu(int m){init(m);} void init(int m){ n=m; cmps=m; par.resize(n,0); siz.resize(n,0); for(int i=0;i<n;i++){ par[i]=i; siz[i]=1; } } void merge(int v,int u){ v=parent(v),u=parent(u); if(v==u)return; cmps--; if(siz[v]<siz[u])swap(v,u); siz[v]+=siz[u]; par[u]=v; } int parent(int v){ return par[v]==v?v:parent(par[v]); } bool same(int v, int u){ return parent(v)==parent(u); } int size(int v=-1){ return (v==-1?cmps:siz[parent(v)]); } }; signed main(){ _3xxEYjy; int n,m; cin>>n>>m; using tup=tuple<int,int,int>; vec(tup) edges; rep(i,m){ int u,v,w; cin>>u>>v>>w; u-=1,v-=1; edges.pb({w,u,v}); } int q; cin>>q; rep(i,q){ int x; cin>>x; vec(tup) nedges; for(auto [w,u,v]:edges){ nedges.pb({abs(w-x),u,v}); } sort(nedges.begin(),nedges.end()); dsu uf(n); ll res=0; for(auto &[w,u,v]:nedges){ if(uf.same(u,v)) continue; uf.merge(u,v); res+=w*1ll; } print(res); } // 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...