Pagini recente » Cod sursa (job #1128794) | Cod sursa (job #329411) | Cod sursa (job #2116257) | Cod sursa (job #2154907) | Cod sursa (job #1436059)
#include<fstream>
#include<iostream>
using namespace std;
ifstream f("intrare.txt");
ofstream g("iesire.txt");
int n, m, costuri[100], M[100], p[100];
int a[100][100];
void citire()
{ f >> n >> m;
int x, y, cost, i;
for (i = 1; i <= m; i++)
{f >> x >> y >> cost;
a[x][y] = cost;
a[y][x] = cost;}
int j = 1;
for (i = 1; i <= n; i++)
{if (a[j][i])
costuri[i] = a[j][i];
else costuri[i] = 32000;
M[i] = 1;
p[i] = j;}
M[j] = 0;
p[j] = 0;
f.close();
}
void rezolva()
{
int i;
for (int j = 1; j < n; j++)
{
int aux = 32000, minv = -1;
for (i = 1; i <= n; i++)
if (M[i] && aux>costuri[i])
{aux = costuri[i];
minv = i;}
M[minv] = 0;
for (i = 1; i <= n; i++)
if (M[i] && a[minv][i]<costuri[i] && a[minv][i])
{p[i] = minv;
costuri[i] = a[minv][i];}
}
}
void afisare(int j)
{
int i;
for (i = 1; i <= n; i++)
if (i != j && a[p[i]][i])
g<< p[i] << " " << i << "\n";
g.close();
}
int main()
{
citire();
rezolva();
afisare(1);
return 0;
}