codevs1003
2015-07-17 16:31
357 查看
题目地址:http://codevs.cn/problem/1003/
分析:
prim
代码:
const
oo=10003;
var
i,j,n,ans:integer;
cost:longint;
ansg:array[1..10000,1..2] of byte;
g:array[1..100,1..100] of integer;
d:array[1..100] of longint;
procedure prim;
var
i,min,minp:integer;
v:array[1..100] of boolean;
pre:array[1..100] of integer;
begin
for i:=1 to n do d[i]:=oo;
d[1]:=0;
fillchar(v,sizeof(v),false);
fillchar(pre,sizeof(pre),0);
for i:=1 to n do
begin
min:=oo;
for j:=1 to n do
if (not v[j])and(d[j]<min) then
begin
min:=d[j]; minp:=j;
end;
v[minp]:=true;
if (pre[minp]<>0)and(g[pre[minp],minp]<>0) then
begin
inc(ans);
inc(cost,g[pre[minp],minp]);
if minp<pre[minp] then
begin ansg[ans,1]:=minp; ansg[ans,2]:=pre[minp]; end
else
begin ansg[ans,1]:=pre[minp]; ansg[ans,2]:=minp; end;
end;
for j:=1 to n do
if d[j]>g[minp,j] then
begin
d[j]:=g[minp,j];
pre[j]:=minp;
end;
end;
end;
begin
readln(n);
for i:=1 to n do
begin
for j:=1 to n do
read(g[i,j]);
readln;
end;
ans:=0; cost:=0;
prim;
writeln(ans);
for i:=1 to ans do
writeln(ansg[i,1],' ',ansg[i,2]);
writeln(cost);
end.
分析:
prim
代码:
const
oo=10003;
var
i,j,n,ans:integer;
cost:longint;
ansg:array[1..10000,1..2] of byte;
g:array[1..100,1..100] of integer;
d:array[1..100] of longint;
procedure prim;
var
i,min,minp:integer;
v:array[1..100] of boolean;
pre:array[1..100] of integer;
begin
for i:=1 to n do d[i]:=oo;
d[1]:=0;
fillchar(v,sizeof(v),false);
fillchar(pre,sizeof(pre),0);
for i:=1 to n do
begin
min:=oo;
for j:=1 to n do
if (not v[j])and(d[j]<min) then
begin
min:=d[j]; minp:=j;
end;
v[minp]:=true;
if (pre[minp]<>0)and(g[pre[minp],minp]<>0) then
begin
inc(ans);
inc(cost,g[pre[minp],minp]);
if minp<pre[minp] then
begin ansg[ans,1]:=minp; ansg[ans,2]:=pre[minp]; end
else
begin ansg[ans,1]:=pre[minp]; ansg[ans,2]:=minp; end;
end;
for j:=1 to n do
if d[j]>g[minp,j] then
begin
d[j]:=g[minp,j];
pre[j]:=minp;
end;
end;
end;
begin
readln(n);
for i:=1 to n do
begin
for j:=1 to n do
read(g[i,j]);
readln;
end;
ans:=0; cost:=0;
prim;
writeln(ans);
for i:=1 to ans do
writeln(ansg[i,1],' ',ansg[i,2]);
writeln(cost);
end.
相关文章推荐
- Linux PS 命令详解
- GMM-HMM学习笔记
- 【Android Studio探索之路系列】之四:Android Studio快捷键
- iOS事件拦截及应用
- 开博啦
- TIOBE 2015年7月编程语言排行榜:C++的复兴
- Ohana Cleans Up
- hadoop笔记(二)
- 搜索路上的一把辛酸泪,入门搜索题
- 3、iOS传值的方法-Notifaction正向传值
- mysql转换UNIX时间戳为标准日期格式
- Cocos2d Android 环境搭建
- ext js define
- JAVA实现DES加密和解密
- android使用handlerthread创建线程示例
- HDU4649:Professor Tian(概率)
- 数组中只出现一次的数字
- stream_context_create()模拟POST/GET
- GRE写作必备句型
- Android无线调试方法(Root和非Root)