Pagini recente » Cod sursa (job #360614) | Cod sursa (job #2905249) | Cod sursa (job #2937274) | Cod sursa (job #2172295) | Cod sursa (job #1709598)
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
int n, m, d, P;
pair<pair<int,int>,pair<int,int> > e[500100];
int t[250100];
int Find(int x) {
return x == t[x] ? x : t[x] = Find(t[x]);
}
int nr=0;
vector<int> S;
int main()
{
freopen("politie.in","r",stdin);
freopen("politie.out","w",stdout);
cin>>n>>m>>d>>P;
for(int i=1;i<=n;i++) t[i]=i;
nr = n;
for (int i=1;i<=m;i++) {
scanf("%d%d%d%d", &e[i].se.fi, &e[i].se.se, &e[i].fi.fi, &e[i].fi.se);
}
sort(e+1,e+m+1);
for(int i = 1; i <= m && nr > 1;i++) {
int a = e[i].se.fi, b = e[i].se.se;
int tip = e[i].fi.fi;
int per = e[i].fi.se;
int pa = Find(a), pb = Find(b);
if (pa == pb) continue;
t[pa]=pb;
nr--;
S.push_back(per);
}
set < int > st;
for(auto x : S) st.insert(x);
S.clear();
for(auto x : st) S.push_back(x);
int k = min(P, (int)S.size());
reverse(S.begin(), S.end());
for(int i = 0; i < k; i++ ) {
printf("%d\n", S[i]);
}
return 0;
}