Pagini recente » Cod sursa (job #2917604) | Cod sursa (job #2787276) | Cod sursa (job #2939301) | Cod sursa (job #1261003) | Cod sursa (job #2570916)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
vector < pair <int,int> > v[200000];
ifstream f("apm.in");
ofstream g("apm.out");
bool viz[200000];
int tata[200000],cmin[200000],n,m,suma,n_c;
void citire()
{
f>>n>>m;
n_c=n;
int i,x,y,c;
for(i=1;i<=m;i++)
{
f>>x>>y>>c;
v[x].push_back(make_pair(y,c));
v[y].push_back(make_pair(x,c));
}
for(i=1;i<=n;i++)
{
cmin[i]=2000;
tata[i]=1;
}
for(i=0;i<v[1].size();i++)
cmin[v[1][i].first]=v[1][i].second;
tata[1]=0;
viz[1]=true;
n--;
}
void afisare()
{
for(int i=2;i<=n_c;i++)
g<<tata[i]<<" "<<i<<'\n';
}
int main()
{
int min,nod,i;
citire();
while(n)
{
min=2000;
nod=-1;
for(i=1;i<=n_c;i++)
if(!viz[i]&&min>cmin[i])
{
min=cmin[i];
nod=i;
}
viz[nod]=true;
n--;
for(i=0;i<v[nod].size();i++)
if(!viz[v[nod][i].first]&&cmin[v[nod][i].first]>v[nod][i].second)
{
tata[v[nod][i].first]=nod;
cmin[v[nod][i].first]=v[nod][i].second;
}
}
for(i=2;i<=n_c;i++)
suma+=cmin[i];
g<<suma<<'\n'<<n_c-1<<'\n';
afisare();
// sa moara mama ca am scris numele fisierelor gresit si m am dat cu capul de pereti pana am vazut
return 0;
}