Pagini recente » Cod sursa (job #1421652) | Cod sursa (job #1258116) | Cod sursa (job #1565287) | Cod sursa (job #2615247) | Cod sursa (job #1773310)
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
FILE *f=fopen("apm.in","r");
vector <pair <int,int> > lv[200010],vf;
vector <int> v;
priority_queue <pair<int,pair<int,int> > > q;
int n,m,a,b,c;
void citire( )
{
fscanf(f,"%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
fscanf(f,"%d%d%d",&a,&b,&c);
lv[a].push_back(make_pair(b,c));
lv[b].push_back(make_pair(a,c));
}
}
int used[200010],co,t,nc,nrf;
void rez( )
{
used[1]=1;
vector < pair <int,int> > ::iterator ii;
for(ii=lv[1].begin();ii!=lv[1].end();ii++)
{
q.push(make_pair(-(ii->second),make_pair(1,ii->first)));
}
int nr=1;
while(nr<n)
{
co=-q.top().first;
t=q.top().second.first;
nc=q.top().second.second;
q.pop();
if(used[nc])
continue;
nrf+=co;
nr++;
used[nc]=1;
vf.push_back(make_pair(t,nc));
vector < pair <int,int> > ::iterator ii;
for(ii=lv[nc].begin();ii!=lv[nc].end();ii++)
if(!used[ii->first])
q.push(make_pair(-(ii->second),make_pair(nc,ii->first)));
}
}
FILE *f1=fopen("apm.out","w");
void afish( )
{
fprintf(f1,"%d\n%d\n",nrf,vf.size());
vector < pair <int,int> > ::iterator ii;
for(ii=vf.begin();ii!=vf.end();ii++)
fprintf(f1,"%d %d\n",ii->second,ii->first);
}
int main()
{
citire( );
rez();
afish();
return 0;
}