Pagini recente » Cod sursa (job #396172) | Cod sursa (job #609806) | Cod sursa (job #527773) | Cod sursa (job #2524962) | Cod sursa (job #1106894)
#include<fstream>
#include<vector>
#include<algorithm>
#define pp 400100
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
int i,cost,n,m,x[pp],y[pp],c[pp],t[pp],ord[pp];
vector<int> v;
int tata(int i)
{
if(t[i]==i)
return i;
t[i]=tata(t[i]);
return t[i];
}
void uneste(int i,int j)
{
t[i]=j;
}
int cmp(int i,int j)
{
return(c[i]<c[j]);
}
int main()
{
f>>n>>m;
for(i=1;i<=m;++i)
{
f>>x[i]>>y[i]>>c[i];
t[i]=i; ord[i]=i;
}
sort(ord+1,ord+m+1,cmp);
for(i=1;i<=m;++i)
{
if(tata(x[ord[i]])!=tata(y[ord[i]]))
{
uneste(t[x[ord[i]]],t[y[ord[i]]]);
v.push_back(ord[i]);
cost+=c[ord[i]];
}
}
g<<cost<<'\n'<<n-1<<'\n';
for(i=0;i<n-1;++i)
g<<x[v[i]]<<" "<<y[v[i]]<<'\n';
return 0;
}