Pagini recente » Cod sursa (job #2407932) | Cod sursa (job #1122983) | Cod sursa (job #392326) | Cod sursa (job #2630146) | Cod sursa (job #1710477)
#include<fstream>
#include<algorithm>
using namespace std;
int n, d, p, m, r1, r2, i, nr, k;
int v[250005], sol[500005];
struct muchie{
int x;
int y;
int t;
int c;
};
muchie w[500005];
ifstream fin("politie.in");
ofstream fout("politie.out");
int cmp(muchie a, muchie b){
if(a.t == b.t){
return a.c < b.c;
}
return a.t < b.t;
}
int rad(int x){
while(v[x] > 0){
x = v[x];
}
return x;
}
int main(){
fin>> n >> m >> d >> p;
for(i = 1; i <= m; i++){
fin>> w[i].x >> w[i].y >> w[i].t >> w[i].c;
}
sort(w + 1, w + m + 1, cmp);
for(i = 1; i <= n; i++){
v[i] = -1;
}
for(i = 1; i <= m; i++){
r1 = rad(w[i].x);
r2 = rad(w[i].y);
if(r1 != r2){
nr++;
sol[nr] = w[i].c;
if(v[r1] < v[r2]){
v[r1] += v[r2];
v[r2] = r1;
}
else{
v[r2] += v[r1];
v[r1] = r2;
}
}
}
sort(sol + 1, sol + nr + 1);
for(i = nr; i >= 1; i--){
if(sol[i] != sol[i + 1]){
fout<< sol[i] <<"\n";
k++;
if(k == p){
break;
}
}
}
return 0;
}