Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- const int MAXN = 1024;
- const int MAXLEN = 1000;
- int g[MAXN][MAXN];
- int used[MAXN];
- int min(int a, int b) {
- if (a <= b)
- return a;
- return b;
- }
- int main() {
- int n, m;
- scanf("%d %d", &n, &m);
- for (int i = 0; i < n; ++i) {
- int a, b, k;
- scanf("%d %d %d", &a, &b, &k);
- g[a][b] = k;
- g[b][a] = k;
- }
- int mine[MAXN];
- for (int i = 0; i < n; ++i) {
- mine[i] = MAXLEN;
- used[i] = 0;
- }
- int ans = 0;
- mine[0] = 0;
- for (int i = 0; i < n; ++i)
- {
- int min_dist = MAXLEN, u;
- for (int j = 0; j < n; ++j)
- if (!used[j] && mine[j] < min_dist)
- {
- min_dist = mine[j];
- u = j;
- }
- ans += min_dist;
- used[u] = 1;
- for (int v = 0; v < n; ++v)
- if (g[u][v])
- mine[v] = min(mine[v], g[u][v]);
- }
- printf("%d", ans);
- return 0;
- }
- /*
- 5 5
- 0 1 5
- 0 2 10
- 1 3 4
- 1 4 10
- 2 4 6
- */
Advertisement
Add Comment
Please, Sign In to add comment