Pagini recente » Cod sursa (job #1637502) | Cod sursa (job #153419) | Rating Antonia Onisoru (antonia.onisoru) | Cod sursa (job #1070098) | Cod sursa (job #1975976)
#include<bits/stdc++.h>
#define rc(x) return cout<<x<<endl,0
#define nmax 200001
const int inf=INT_MAX;
const int mod=1e9+7;
typedef long long ll;
using namespace std;
long n,m,c,x,y,i,j,nr=1,tot,viz[nmax],key[nmax],par[nmax],mi,in;
vector<pair<long,long> >a[nmax];
int main()
{
ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0);
freopen("amp.in","r",stdin);
freopen("apm.out","w",stdout);
cin>>n>>m;
for(i=1;i<=max(n,m);i++)
{
if(i<=m)
{
cin>>x>>y>>c;
a[x].push_back({y,c});
a[y].push_back({x,c});
}
if(i<=n)key[i]=inf/2;
}
key[1]=0,par[1]=-1;
for(i=1;i<=n;i++)
{
mi=inf/2;
for(j=1;j<=n;j++)if(!viz[j] && key[j]<mi)mi=key[j],in=j;
tot+=mi;
viz[in]=1;
for(j=0;j<a[in].size();j++)
if(!viz[a[in][j].first] && a[in][j].second<key[a[in][j].first])
par[a[in][j].first]=in,key[a[in][j].first]=a[in][j].second;
}
cout<<tot<<endl<<n-1<<endl;
for(i=2;i<=n;i++)cout<<par[i]<<" "<<i<<endl;
return 0;
}