Pagini recente » Cod sursa (job #2938898) | Cod sursa (job #2500938) | Cod sursa (job #2386845) | Cod sursa (job #2902380) | Cod sursa (job #2742992)
#include <bits/stdc++.h>
#define pii pair<int,int>
#define ppii pair<pii,pii >
using namespace std;
ifstream fin("politie.in");
ofstream fout("politie.out");
int n,m,d,p;
int x,y,t,c;
int parent[250005];
int length[250005];
int get_parent(int pos)
{
if(pos!=parent[pos])
parent[pos]=get_parent(parent[pos]);
return parent[pos];
}
priority_queue<ppii,vector<ppii >,greater<ppii > >pq;
set<int>s;
int main()
{
fin>>n>>m>>d>>p;
for(int i=1;i<=m;i++)
{
fin>>x>>y>>t>>c;
pq.push({{t,c},{x,y}});
}
for(int i=1;i<=n;i++)
parent[i]=i, length[i]=1;
int cnt=1;
while(cnt<n && !pq.empty())
{
ppii now=pq.top();
pq.pop();
t=now.first.first;
c=now.first.second;
x=now.second.first;
y=now.second.second;
x=get_parent(x);
y=get_parent(y);
if(x==y)
continue;
if(length[x]>length[y])
swap(x,y);
length[y]+=length[x];
parent[x]=y;
s.insert(c);
cnt++;
}
set<int>::iterator it=s.end();
while(p>0)
{
if(it==s.begin())
break;
it--;
fout<<*it<<"\n";
p--;
}
return 0;
}