Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- using namespace std;
- #define MAXN 1024
- #define MAXM 2000002
- #define MIN(a,b) ((a<b)?a:b)
- int adj[MAXN][MAXN];
- int d[MAXN];
- int main (void)
- {
- int n, m, x, y, z, inst = 0;
- long long custo;
- while (scanf ("%d %d", &n, &m) == 2)
- {
- custo = 0;
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- adj[i][j] = 0x3f3f3f3f;
- }
- }
- for (int i = 0; i < m; i++)
- {
- scanf ("%d %d %d", &x, &y, &z);
- x--; y--;
- adj[x][y] = MIN(z, adj[x][y]);
- adj[y][x] = adj[x][y];
- }
- int count = 1;
- for (int i = 0; i < n; i++)
- {
- d[i] = adj[0][i];
- }
- d[0] = 0;
- while (count < n)
- {
- int menor = 0x3f3f3f3f, j;
- for (int i = 0; i < n; i++)
- {
- if (d[i] && d[i] < menor)
- {
- j = i;
- menor = d[i];
- }
- }
- custo += d[j];
- d[j] = 0;
- for (int i = 0; i < n; i++)
- {
- if (adj[j][i] < d[i])
- d[i] = adj[j][i];
- }
- count++;
- }
- printf ("Instancia %d\n%lld\n\n", ++inst, custo);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement