Pagini recente » Cod sursa (job #1778252) | Cod sursa (job #3121044) | Cod sursa (job #2368694) | Cod sursa (job #2856137) | Cod sursa (job #1459595)
#include<fstream>
#include<vector>
#define inf 1000000000
using namespace std;
vector < pair <int, int> > L[200003];
int t[200003], n, m2, i, x, y, m[200003], z, D[200003], vecin, k, minim, nrm, sol;
ifstream in("apm.in");
ofstream out("apm.out");
int main(){
in>>n>>m2;
for(i=1; i<=m2; i++){
in>>x>>y>>z;
L[x].push_back(make_pair(y, z));
L[y].push_back(make_pair(x, z));
}
for(i=2; i<=n; i++)
D[i]=inf;
while(1){
minim=inf;
for(i=1; i<=n; i++){
if(D[i]<minim && m[i]==0){
minim=D[i];
k=i;
}
}
if(minim==inf)
break;
m[k]=1;
nrm++;
for(i=0; i<L[k].size(); i++){
vecin=L[k][i].first;
if(D[vecin]>L[k][i].second && m[vecin] == 0){
D[vecin]=L[k][i].second;
t[vecin]=k;
}
}
}
for(i=2; i<=n; i++)
sol+=D[i];
out<<sol<<"\n"<<n-1<<"\n";
for(i=2; i<=n; i++)
out<<i<<" "<<t[i]<<"\n";
return 0;
}