博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1251
阅读量:6903 次
发布时间:2019-06-27

本文共 1130 字,大约阅读时间需要 3 分钟。

代码
 
#include
<
iostream
>
using
namespace
std;
#define
N 27
#define
M 27
#define
INF 111
int
dist[N];
int
P[M][M];
//
初始值为INF;
int
n;
//
n个村庄;
int
used[N];
int
total;
void
prim();
int
main()
{
char
v;
char
tmp;
int
money;
int
num;
cin
>>
n;
while
(n)
{
total
=
0
;
for
(
int
m
=
0
;m
<
N;m
++
)
{
dist[m]
=
INF;
used[m]
=
0
;
}
for
(
int
j
=
0
;j
<
M;j
++
)
for
(
int
k
=
0
;k
<
M;k
++
)
P[j][k]
=
INF;
int
i
=
0
;
for
(i
=
0
;i
<
n
-
1
;i
++
)
{ cin
>>
v;
cin
>>
num;
while
(num
--
){
cin
>>
tmp;
cin
>>
money;
P[v
-
'
A
'
][tmp
-
'
A
'
]
=
P[tmp
-
'
A
'
][v
-
'
A
'
]
=
money;
}
}
prim();
cout
<<
total
<<
endl;
cin
>>
n;
}
}
void
prim()
//
从第o点开始;
{
for
(
int
i
=
0
;i
<
n;i
++
)
dist[i]
=
P[
0
][i];
used[
0
]
=
1
;
int
x;
for
(x
=
0
;x
<
n;x
++
){
int
min
=
INF;
int
f
=-
1
;
for
(
int
i
=
0
;i
<
n;i
++
)
if
(
!
used[i]
&&
dist[i]
<
min)
{
min
=
dist[i];
f
=
i;
}
if
(f
==-
1
)
break
;
else
{
used[f]
=
1
;
total
+=
dist[f];
}
for
(
int
z
=
0
;z
<
n;z
++
){
if
(
!
used[z]
&&
P[f][z]
<
dist[z])
{
dist[z]
=
P[f][z];
}
}
}
}

 

很简单  很基础的最小生成树   既然ac了   就把代码贴出来了 :

 

 

 

转载于:https://www.cnblogs.com/anotherday/archive/2010/11/28/1890588.html

你可能感兴趣的文章
Java基础学习总结(6)——面向对象
查看>>
RIP协议之高级篇
查看>>
Maven学习总结(三)——使用Maven构建项目
查看>>
Java基础学习总结(6)——面向对象
查看>>
Python ***没有开启静态化的 WordPress 站
查看>>
Linux RedHat的安装
查看>>
Docker高手十一法则
查看>>
iOS7之定制View Controller切换效果
查看>>
[Codeforces1148C]Crazy Diamond——构造
查看>>
大型网站技术架构(二)架构模式
查看>>
浅谈C++重载覆盖隐藏 广州疯狂JAVA
查看>>
Docker学习总结(2)——Docker实战之入门以及Dockerfile(二)
查看>>
Java消息服务JMS详解
查看>>
Oracle入门教程:统计信息的恢复和备份
查看>>
Maven学习总结(15)——Maven 项目中pom.xml详解
查看>>
《Effective C++第三版》读书笔记——定制new和delete
查看>>
ESXI 5.0配置VNC访问
查看>>
Effective C++: std::decay和decltype
查看>>
高并发学习笔记(三)
查看>>
智能合约编程/Dapp漏洞 -- 默认可见性修饰符
查看>>