Pagini recente » Cod sursa (job #2903137) | Cod sursa (job #605885) | Cod sursa (job #1598452) | Cod sursa (job #2558942) | Cod sursa (job #2884198)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("apm.in");
ofstream fout ("apm.out");
vector <pair <int, int>> v[10001];
int c[10001];
bool viz[10001];
int p[10001];
int main()
{
int n, m, i, j, x, y, z;
int rasp;
fin >> n >> m;
for (i = 1; i<=m; i++)
{
fin >> x >> y >> z;
v[x].push_back ({y, z});
v[y].push_back ({x, z});
}
for (i = 0; i<=n; i++)
c[i] = 1<<30;
c[1] = 0;
rasp = 0;
for (i = 1; i<=n; i++)
{
x = 0;
for (j = 1; j<=n; j++)
if (viz[j] == 0 && c[j] < c[x])
x = j;
viz[x] = 1;
rasp = rasp + c[x];
for (j = 0; j<v[x].size(); j++)
if (viz[v[x][j].first] == 0 && c[v[x][j].first] > v[x][j].second)
{
c[v[x][j].first] = v[x][j].second;
p[v[x][j].first] = x;
}
}
fout << rasp << '\n';
fout << n-1 << '\n';
for (i = 2; i<=n; i++)
fout << i << ' ' << p[i] << '\n';
return 0;
}