제출 #1141685

#제출 시각아이디문제언어결과실행 시간메모리
1141685erering시간이 돈 (balkan11_timeismoney)C++20
45 / 100
5 ms584 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define pb push_back
const int N=201;
struct info{
  int u,v,t,c;
  friend bool operator< (info a, info b) {
    return a.t*a.c<b.t*b.c;
  }
};
int par[N],sz[N];
int find(int x){
  return par[x]=(x==par[x]?x:find(par[x]));
}
void merge(int a,int b){
  a=find(a);
  b=find(b);
  if(a==b)return;
  if(sz[a]>sz[b])swap(a,b);
  par[a]=b;
  sz[b]+=sz[a];
}
signed main(){
  int n,m; cin>>n>>m;
  info a[m];
  for(int i=0;i<m;i++){
    cin>>a[i].u>>a[i].v>>a[i].t>>a[i].c;
    par[a[i].u]=a[i].u; par[a[i].v]=a[i].v;
    sz[a[i].u]=1; sz[a[i].v]=1;
  }
  sort(a,a+m);
  int ans=0,ans2=0,ans3=0;
  vector<pair<int,int>> vec;
  for(int i=0;i<m;i++){
    if(find(a[i].u)==find(a[i].v))continue;
    ans2+=a[i].t; ans3+=a[i].c;
    ans+=a[i].t;
    merge(a[i].u,a[i].v);
    vec.pb({a[i].u,a[i].v});
  }
  cout<<ans2<<' '<<ans3<<endl;
  for(auto i:vec)cout<<i.first<<' '<<i.second<<endl;
}

#Verdict Execution timeMemoryGrader output
Fetching results...