新學習了prim演算法,把之前的dijkstra改了改,d陣列用來存上乙個距離當前節點最近的長度,而不是源點到當前最近的長度就可以了。初始化d為inf,如果條件不夠那和算出來必定》inf(沒考慮溢位,因為我定義的inf並不是很大)(題目小坑,把n和m輸入順序反了一下。)
1#pragma warning(disable:4996)23
4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include
20 #include 21 #include 22
23using
namespace
std;
2425
const
int maxn = 105;26
const
int inf = 0xffffff;27
intd[maxn];
28int
g[maxn][maxn];
29int
vis[maxn];
30int
n, m;
3132
void
init()
39 g[i][i] = 0;40
}41}42
43int prim(int
start) 52}
53}54 vis[u] = 1;55
for(int j = 1; j <= n; j++) 59}
60}61int sp = 0;62
for(int i = 1; i <= n; i++)
65return
sp;66}67
68int
main() 78}
79int len = prim(1
);80
if(len > inf) puts("?"
);81
else printf("
%d\n
", len);82}
83 }
hdoj1863 暢通工程
此題與hdoj1233解法一樣 include include using namespace std int city 101 struct road road road 5051 int cmp const road a,const road b int find const int n int...
HDOJ 1863 暢通工程 普利姆演算法
普利姆演算法是以乙個點為源點,找該源點到下乙個點的最短距離 include include define inf 99999 using namespace std int mp 110 110 int dis 110 bool vis 110 普利姆演算法 void prim int m vis ...
HDU 1863 暢通工程
include include include using namespace std const int maxn 5000 5 int n,m,ans,cnt bool flag struct streat edge maxn int root 105 int find int x void k...