Pagini recente » Cod sursa (job #1897886) | Cod sursa (job #559486) | Cod sursa (job #3169340) | Cod sursa (job #675397) | Cod sursa (job #2124931)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream in("politie.in");
ofstream out("politie.out");
struct str
{
int x,y,tip,c;
bool operator <(const str& other) const
{
if(tip==other.tip)
return c<other.c;
return tip<other.tip;
}
}muchie[500002];
vector <int> sol;
int n,m,i,contor,d,p,t1,t2,nod,tata[250002],l;
void citire()
{
in>>n>>m>>d>>p;
for(i=1;i<=m;i++)
{
in>>muchie[i].x>>muchie[i].y>>muchie[i].tip>>muchie[i].c;
}
sort(muchie+1,muchie+m+1);
}
int tatal(int nod)
{
if(nod!=tata[nod])
{
tata[nod]=tatal(tata[nod]);
}
return tata[nod];
}
void APM()
{
for(i=1;i<=n;i++)
{
tata[i]=i;
}
for(i=1;i<=m;i++)
{
t1=tatal(muchie[i].x);
t2=tatal(muchie[i].y);
if(t1!=t2)
{
tata[t1]=t2;
contor++;
sol.push_back(muchie[i].c);
if(contor==n-1)
return;
}
}
}
bool desc(int a,int b)
{
return a>b;
}
void afis()
{
l=sol.size()+1;
contor=0;
sort(sol.begin(),sol.end(),desc);
sol.push_back(0);
i=0;
while(i<l-1)
{
out<<sol[i]<<"\n";
contor++;
if(contor==p)
return;
while(sol[i]==sol[i+1])
i++;
i++;
}
}
int main()
{
citire();
APM();
afis();
return 0;
}