Pagini recente » Cod sursa (job #3278660) | Cod sursa (job #3280910) | Cod sursa (job #2094523) | Cod sursa (job #1960281) | Cod sursa (job #1795174)
#include <bits/stdc++.h>
using namespace std;
vector<tuple<int, int, int, int>> v;
int N, M, D, P;
int daddy[250005];
int whos_ur_daddy(int k)
{
if(daddy[k] != k)
daddy[k] = whos_ur_daddy(daddy[k]);
return daddy[k];
}
void couple(int a, int b)
{
daddy[a] = b;
}
int main()
{
freopen("politie.in", "r", stdin);
freopen("politie.out", "w", stdout);
ios::sync_with_stdio(false);
cin >> N >> M >> D >> P;
for(int i = 1; i <= M; ++i) {
int a, b, c, d;
cin >> a >> b >> c >> d;
v.emplace_back(c, a, b, d);
}
sort(v.begin(), v.end());
for(int i = 1; i <= N; ++i)
daddy[i] = i;
set<int> dangerSet;
for(auto it : v) {
int left = get<1>(it), right = get<2>(it), cost = get<0>(it), danger = get<3>(it);
if(whos_ur_daddy(left) != whos_ur_daddy(right)) {
couple(whos_ur_daddy(left), whos_ur_daddy(right));
dangerSet.insert(-danger);
}
}
while(!dangerSet.empty() && P) {
--P;
cout << -*dangerSet.begin() << "\n";
dangerSet.erase(dangerSet.begin());
}
return 0;
}