-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path1078.cpp
More file actions
66 lines (59 loc) · 1.53 KB
/
Copy path1078.cpp
File metadata and controls
66 lines (59 loc) · 1.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*************************************************************************
> File Name: 1078.cpp
> Author: dulun
> Mail: dulun@xiyoulinux.org
> Created Time: 2015年12月02日 星期三 18时59分31秒
************************************************************************/
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int n;
cin>>n;
int sum = 0;
int low[100];
// int adj[100];
int min;
int a[101][101];
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
cin>>a[i][j];
}
// adj[0] = low[0] = 0;
for(int i = 1; i < n; i++)
{
low[i] = a[0][i];
// adj[i] = 0;
}
int j = 1, k = 0;
for(int i = 1; i < n; i++)
{
min = 99999999;
j = 1; k = 0;
while(j < n)
{
if(low[j] != 0 && low[j] < min)
{
min = low[j];
k = j;
}
j++;
}
// sum += a[adj[k]][k];
sum += low[k];
low[k] = 0;//入树
for(j = 1; j < n; j++)
{ //a[k][j]:与新加入树的点相连的点
if(low[j] != 0 && a[k][j] < low[j])//if当前入树的点
//能到达的,比以前能到达的顶点,更近,则更新;
{
low[j] = a[k][j];
// adj[j] = k; //与其相邻的点
// adj[i] 与 i相连 的最小距离为 low[i] == a[adj[i]][i] 或 ==a[i][adj[i]];
}
}
}
cout<<sum;
}