Pagini recente » Cod sursa (job #2405558) | Cod sursa (job #1619593) | Cod sursa (job #527820) | Cod sursa (job #1722626) | Cod sursa (job #2275515)
#include <bits/stdc++.h>
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
vector < pair <int,int> > v[200005];
priority_queue <pair <int,pair<int,int> >,vector <pair <int,pair <int,int> > >,greater <pair <int,pair<int ,int > > > > h;
int n,m,i,x,y,cost,sel[200005],k,t[200005],j;
int main()
{
f>>n>>m;
for (i=1;i<=m;i++)
{
f>>x>>y>>cost;
v[x].push_back(make_pair(y,cost));
v[y].push_back(make_pair(x,cost));
}
sel[1]=1;
for (i=0;i<v[1].size();i++)
{
h.push({v[1][i].second,{1,v[1][i].first}});
}
for (i=1;i<=n;i++)
{
t[i]=i;
}
t[1]=0;
cost=0;
for (i=1;i<n;i++)
{
while (sel[h.top().second.second]==1)
{
h.pop();
}
k=h.top().second.second;
sel[k]=1;
t[k]=h.top().second.first;
cost+=h.top().first;
for (j=0;j<v[k].size();j++)
{
if (sel[v[k][j].first]==0)
{
h.push({v[k][j].second,{k,v[k][j].first}});
}
}
}
g<<cost<<'\n';
g<<n-1<<'\n';
for (i=2;i<=n;i++)
{
g<<t[i]<<" "<<i<<'\n';
}
return 0;
}