Submission #955509

#TimeUsernameProblemLanguageResultExecution timeMemory
955509bunhadasouBridges (APIO19_bridges)C++14
14 / 100
80 ms7932 KiB
#include <bits/stdc++.h> #define fi first #define se second #define mp make_pair #define PB push_back #define EB emplace_back #define bit(n,i) ((n>>i)&1) #define all(x) x.begin(),x.end() #define ll long long #define sz(x) (int)x.size() #define TASK "cf" using namespace std; const int maxn=1e5+5; vector<pair<pair<int,int>,int>> ds,query; int n,m,q; int Rank[maxn],par[maxn],ans[maxn]; void make_set(){ for (int i=1;i<=n;i++) { par[i]=i; Rank[i]=1; } } int find(int x) { if (x==par[x]) return x; return par[x]=find(par[x]); } void UNION(int x,int y) { x=find(x);y=find(y); if (x==y) return ; if (Rank[x]<Rank[y]) swap(x,y); Rank[x]+=Rank[y]; par[y]=x; return ; } bool cmp1(pair<pair<int,int>,int> a,pair<pair<int,int>,int> b){ return a.se>b.se; } bool cmp2(pair<pair<int,int>,int> a,pair<pair<int,int>,int> b){ return a.fi.se>b.fi.se; } signed main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n>>m; make_set(); for (int i=1;i<=m;i++) { int x,y,z; cin>>x>>y>>z; ds.PB(mp(mp(x,y),z)); } cin>>q; for (int i=1;i<=q;i++) { int type,x,y; cin>>type>>x>>y; query.PB(mp(mp(x,y),i)); } sort(all(ds),cmp1); sort(all(query),cmp2); int j=0; for (int i=0;i<q;i++) { int w=query[i].fi.se; while (j<m && ds[j].se>=w) { UNION(ds[j].fi.fi,ds[j].fi.se); j++; } ans[query[i].se]=Rank[find(query[i].fi.fi)]; } for (int i=1;i<=q;i++) cout<<ans[i]<<"\n"; return 0; }

Compilation message (stderr)

bridges.cpp: In function 'int find(int)':
bridges.cpp:28:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   28 |     if (x==par[x]) return x; return par[x]=find(par[x]);
      |     ^~
bridges.cpp:28:30: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   28 |     if (x==par[x]) return x; return par[x]=find(par[x]);
      |                              ^~~~~~
#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...