Pagini recente » Cod sursa (job #1778082) | Cod sursa (job #452579) | Profil Ramona2007 | Cod sursa (job #364595) | Cod sursa (job #2425351)
#include <fstream>
#include <vector>
#include <queue>
#include <iostream>
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
vector<pair<int,int> >v[200005];
pair<int,pair<int,int> >q;
struct muchie{int x,y,d;}s[200005];
priority_queue<pair<int,pair<int,int> > > C;
bool viz[200005];
int main()
{int N,M,i,x,y,d,sol=0,ct=0;
//pair<int,int>c;
int c;
fin>>N>>M;
for(i=1;i<=M;i++)
{fin>>x>>y>>d;
v[x].push_back(make_pair(-d,y));
v[y].push_back(make_pair(-d,x));
}
for(i=0;i<v[1].size();i++)
{C.push(make_pair(v[1][i].first,make_pair(1,v[1][i].second)));
}
viz[1]=1;
while(!C.empty())
{//c=C.front;
while(!C.empty()&&viz[C.top().second.second]==1)
{C.pop();
}
if(!C.empty()) {c=C.top().second.second;
sol+=-C.top().first;
//cout<<C.top().first<<"\n";
ct++;
s[ct].x=C.top().second.first;
s[ct].y=C.top().second.second;
//s[ct].d=C.top().first;
viz[c]=1;
}
//cout<<"ahhh";
if(!C.empty())C.pop();
//viz[c.second]=1;
for(i=0;i<v[c].size();i++)
if(viz[v[c][i].second]==0){C.push(make_pair(v[c][i].first,make_pair(c,v[c][i].second)));}
}
fout<<sol<<"\n";
fout<<N-1<<"\n";
for(i=1;i<=N-1;i++)
fout<<s[i].x<<" "<<s[i].y<<"\n";
}