#include "bits/stdc++.h"
using namespace std;
using ll=long long;
#define S second
#define F first
vector<array<int,3>>edg;
int p[300],T,M;
int fnd(int v){
if(v!=p[v])p[v]=fnd(p[v]);
return p[v];
}
void mrg(int a,int b){
a=fnd(a),b=fnd(b);
p[b]=a;
}
int main(){
cin.tie(0)->sync_with_stdio(0);
int n,m;
cin>>n>>m;
array<int,4>a[m];
for(auto&i:a){
cin>>i[2]>>i[3]>>i[0]>>i[1];
T+=i[0];
M+=i[1];
}
if(m==n-1){
cout<<T<<' '<<M<<'\n';
for(auto i:a)cout<<i[2]<<' '<<i[3]<<'\n';
return 0;
}
for(int i=0;i<300;i++)p[i]=i;
vector<pair<int,int>>ans;
sort(a,a+m);
T=0;
for(auto i:edg){
if(fnd(i[1])==fnd(i[2]))continue;
ans.push_back({i[1],i[2]});
mrg(i[1],i[2]);
T+=i[0];
}
cout<<T<<' '<<T<<'\n';
for(auto i:ans)cout<<i.F<<' '<<i.S<<'\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |