poj2352,poj1287

 2023-10-08 阅读 26 评论 0

摘要:最小生成樹 View Code #include?<iostream>#include?<cstdio>#include?<cstdlib>#include?<cstring>using?namespace?std;#define?maxn?55#define?inf?0x3f3f3f3fint?n,?m;int?vis[maxn];int?lowc[maxn];int?cost[maxn][maxn];int?prim(){????int?i,?

最小生成樹

ContractedBlock.gifExpandedBlockStart.gifView Code
#include?<iostream>
#include?
<cstdio>
#include?
<cstdlib>
#include?
<cstring>
using?namespace?std;

#define?maxn?55
#define?inf?0x3f3f3f3f

int?n,?m;
int?vis[maxn];
int?lowc[maxn];
int?cost[maxn][maxn];

int?prim()
{
????
int?i,?j,?p;
????
int?minc,?res?=?0;
????memset(vis,?
0,?sizeof(vis));
????vis[
0]?=?1;
????
for?(i?=?1;?i?<?n;?i++)
????????lowc[i]?
=?cost[0][i];
????
for?(i?=?1;?i?<?n;?i++)
????{
????????minc?
=?inf;
????????p?
=?-1;
????????
for?(j?=?0;?j?<?n;?j++)
????????????
if?((0?==?vis[j]?&&?minc?>?lowc[j]))
????????????{
????????????????minc?
=?lowc[j];
????????????????p?
=?j;
????????????}
????????
if?(inf?==?minc)
????????????
return?-1;
????????res?
+=?minc;
????????vis[p]?
=?1;
????????
for?(j?=?0;?j?<?n;?j++)
????????????
if?(0?==?vis[j]?&&?lowc[j]?>?cost[p][j])
????????????????lowc[j]?
=?cost[p][j];
????}
????
return?res;
}

void?input()
{
????scanf(
"%d",?&m);
????
for?(int?i?=?0;?i?<?n;?i++)
????????
for?(int?j?=?0;?j?<?n;?j++)
????????????cost[i][j]?
=?inf;
????
for?(int?i?=?0;?i?<?m;?i++)
????{
????????
int?a,?b,?c;
????????scanf(
"%d%d%d",?&a,?&b,?&c);
????????a
--;
????????b
--;
????????
if?(cost[a][b]?>?c)
????????????cost[a][b]?
=?cost[b][a]?=?c;
????}
}

int?main()
{
????
//freopen("t.txt",?"r",?stdin);
????while?(scanf("%d",?&n),?n)
????{
????????input();
????????printf(
"%d\n",?prim());
????}

????
return?0;
}

轉載于:https://www.cnblogs.com/rainydays/archive/2011/07/14/2106020.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/133079.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息