제출 #467940

#제출 시각아이디문제언어결과실행 시간메모리
467940czhang2718시간이 돈 (balkan11_timeismoney)C++14
40 / 100
5 ms588 KiB
#include "bits/stdc++.h"
using namespace std;

#define nl '\n'
int n, m;
const int N=200;
int par[N];
vector<pair<int, pair<int, int>>> edges;

int find(int x){
  if(par[x]==x) return x;
  return par[x]=find(par[x]);
}

bool join(int x, int y){
  if(find(x)==find(y)) return 0;
  par[find(x)]=find(y);
  return 1;
}

int main(){
  cin.tie(0)->sync_with_stdio(0);
  // freopen("input.txt", "r", stdin);
  // freopen("timeismoney.out", "w", stdout);

  cin >> n >> m;
  for(int i=0; i<n; i++) par[i]=i;
  for(int i=0; i<m; i++){
    int u, v, c, t; cin >> u >> v >> t >> c;
    edges.push_back({c, {u, v}});
  }
  int ans=0;
  vector<pair<int, int>> use;
  sort(edges.begin(), edges.end());
  for(auto p:edges){
    int u=p.second.first;
    int v=p.second.second;
    if(join(u, v)) ans+=p.first, use.push_back({u, v});
  }
  cout << ans << " " << ans << nl;
  for(auto e:use) cout << e.first << " " << e.second << nl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...