Submission #1186397

#TimeUsernameProblemLanguageResultExecution timeMemory
1186397FaresSTH시간이 돈 (balkan11_timeismoney)C++20
5 / 100
3 ms584 KiB
#include "bits/stdc++.h" using namespace std; using ll=long long; #define S second #define F first vector<array<int,3>>edg; const int mxn=300; int p[mxn],sz[mxn],s; int f(int v){ if(v!=p[v])p[v]=f(p[v]); return p[v]; } void merge(int a,int b){ a=f(a),b=f(b); if(sz[a]<sz[b])swap(a,b); sz[a]+=sz[b]; p[b]=a; } int main(){ cin.tie(0)->sync_with_stdio(0); int n,m; cin>>n>>m; for(int i=1,a,b,c,d;i<=m;i++){ cin>>a>>b>>c>>d; edg.push_back({c,a,b}); s+=c; } if(m==n-1){ cout<<s<<' '<<s<<'\n'; for(auto i:edg){ cout<<i[1]<<' '<<i[2]<<'\n'; } return 0; } sort(edg.begin(),edg.end()); vector<pair<int,int>>ans; s=0; for(auto i:edg){ if(f(i[1])==f(i[2]))continue; ans.push_back({i[1],i[2]}); merge(i[1],i[2]); s+=i[0]; } cout<<s<<' '<<s<<'\n'; for(auto i:ans)cout<<i.F<<' '<<i.S<<'\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...