Pagini recente » Cod sursa (job #1133733) | Cod sursa (job #1628134) | Cod sursa (job #1192720) | Cod sursa (job #1601206) | Cod sursa (job #1710148)
#include<bits/stdc++.h>
using namespace std;
typedef struct lol {
int x,y,tip,cost;
friend bool operator < (const lol &a,const lol &b) {
if(a.tip==b.tip) return a.cost<b.cost;
return a.tip<b.tip;
}
}troll;
int i,n,m,G,P,p[250005];
troll a[500005];
set<int> S;
int Find(int x) { return p[x]==x ? x:p[x]=Find(p[x]); }
void Unite(int x,int y) { p[Find(x)]=Find(y); }
int main()
{
ifstream cin("politie.in");
ofstream cout("politie.out");
ios_base::sync_with_stdio(0); cin.tie(0);
cin>>n>>m>>G>>P;
for(i=1;i<=m;++i) cin>>a[i].x>>a[i].y>>a[i].tip>>a[i].cost;
for(i=1;i<=n;++i) p[i]=i;
sort(a+1,a+m+1);
for(i=1;i<=m;++i) if(Find(a[i].x)!=Find(a[i].y)) S.insert(-a[i].cost),Unite(a[i].x,a[i].y);
while(P--) cout<<-(*S.begin())<<'\n',S.erase(S.begin());
return 0;
}