Submission #1033381

#TimeUsernameProblemLanguageResultExecution timeMemory
1033381shenfe1Reconstruction Project (JOI22_reconstruction)C++17
7 / 100
5062 ms14344 KiB
#include <bits/stdc++.h> #pragma GCC optimize("Ofast") #pragma GCC target("avx2") using namespace std; #define pb push_back #define all(v) v.begin(),v.end() #define sz(s) (int)s.size() #define ppb pop_back #define ll long long #define pii pair<int,int> #define F first #define S second #define lb lower_bound // #define int ll mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int MAX=2e5+10; int n,m; vector<pair<int,pii>> e; struct DSU{ int f[MAX]; void init(int n){ for(int i=1;i<=n;i++)f[i]=i; } int get(int v){ return (f[v]==v?v:f[v]=get(f[v])); } void unite(int a,int b){ a=get(a); b=get(b); f[a]=b; } }D; int make(int a,pii x){ if(D.get(x.F)!=D.get(x.S)){ D.unite(x.F,x.S); return a; } return 0; } ll solve(int d){ int r=lb(all(e),make_pair(d,make_pair(0,0)))-e.begin(); int l=r-1; D.init(n); ll ans=0; int cnt=0; for(int i=1;i<=m,cnt<n-1;i++){ if((r<sz(e)&&l>=0&&e[r].F-d<=d-e[l].F)||l<0){ if(D.get(e[r].S.F)!=D.get(e[r].S.S)){ ans+=e[r].F-d; D.unite(e[r].S.F,e[r].S.S); cnt++; } r++; } else{ if(D.get(e[l].S.F)!=D.get(e[l].S.S)){ ans+=d-e[l].F; D.unite(e[l].S.F,e[l].S.S); cnt++; } l--; } } return ans; } void solve(){ cin>>n>>m; for(int i=1;i<=m;i++){ int a,b,c; cin>>a>>b>>c; e.pb({c,{a,b}}); } sort(all(e)); // cout<<e[0].F<<" "<<e[1].F<<"\n"; int q; cin>>q; while(q--){ int d; cin>>d; cout<<solve(d)<<"\n"; } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t=1; // cin>>t; while(t--)solve(); }

Compilation message (stderr)

reconstruction.cpp: In function 'long long int solve(int)':
reconstruction.cpp:58:18: warning: left operand of comma operator has no effect [-Wunused-value]
   58 |     for(int i=1;i<=m,cnt<n-1;i++){
      |                 ~^~~
#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...