Pagini recente » Cod sursa (job #324554) | Cod sursa (job #2934931) | Cod sursa (job #20462) | Cod sursa (job #523545) | Cod sursa (job #2669514)
#include <bits/stdc++.h>
using namespace std;
ifstream f("apm.in");
ofstream g("apm.out");
int n,m,cost,d[200005],t[200005];
bool sel[200005];
const int oo = INT_MAX;
vector<pair<int,int>> G[200005],e;
void Prim_Patratic()
{
for(int i=1; i<=n; i++)
{
d[i]=oo;
}
d[1]=0;
bool done=false;
int nod=0;
while(!done)
{
done=true;
int Min=oo;
for(int i=1; i<=n; i++)
{
if(!sel[i] && d[i]<Min)
{
Min=d[i];
nod=i;
done=false;
}
}
if(done)
{
break;
}
sel[nod]=true;
if(nod!=1)
{
e.push_back({t[nod],nod});
}
cost+=d[nod];
for(auto it : G[nod])
{
if(!sel[it.first] && it.second<d[it.first])
{
d[it.first]=it.second;
t[it.first]=nod;
}
}
}
}
int main()
{
f>>n>>m;
for(int i=1; i<=m; i++)
{
int x,y,c;
f>>x>>y>>c;
G[x].push_back({y,c});
G[y].push_back({x,c});
}
Prim_Patratic();
g<<cost<<'\n';
g<<e.size()<<'\n';
for(auto it : e)
{
g<<it.first<<' '<<it.second<<'\n';
}
return 0;
}