云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 信息学竞赛图论习题

信息学竞赛图论习题

  • 62 次阅读
  • 3 次下载
  • 2025/5/22 19:12:40

dist:array[1..maxn,1..maxn] of real; prev:array[1..maxn,1..maxn] of 0..maxn; procedure init; var

m,i,u,v:integer; begin

assign(input,'floyd.in'); reset(input);

assign(output,'floyd.out'); rewrite(output); readln(n,m);

fillchar(prev,sizeof(prev),0); for u:=1 to n do for v:=1 to n do dist[u,v]:=1e10; for i:=1 to m do begin

readln(u,v,dist[u,v]); dist[v,u]:=dist[u,v]; prev[u,v]:=u; prev[v,u]:=v; end; end;{init} procedure floyd; var

i,j,k:integer; begin

for k:=1 to n do for i:=1 to n do for j:=1 to n do

if (dist[i,k]+dist[k,j]

dist[i,j]:=dist[i,k]+dist[k,j]; prev[i,j]:=prev[k,j]; end; end;{floyd}

procedure print(i,j:integer); begin if i=j

then write(i)

else if prev[i,j]=0

then write('No Solution!') else begin

print(i,prev[i,j]);

9

write('->',j); end; end;{print} begin init; floyd;

for i:=1 to n do for j:=i+1 to n do begin

write(i,' ',j,' ');

write(dist[i,j]:0:0,' '); print(i,j); writeln; end;

close(input); close(output); end.

求有向图的所有环,此问题包括了求最大环或者最小环。 【输入】

第一行两个数v,e,分别代表图的顶点数和边数,以下e行,每行为有连接的两个顶点和权。 【输出】

顶点编号和环的长度以及包含该顶点的环的路径。

【输入样例】 huan.in 5 7 1 2 2 2 1 1 2 5 4 3 2 5 3 4 7 4 1 3 5 4 6

【输出样例】 huan.out 1 3 1->2 2 3 2->1

4 15 4->1->2->5 5 15 5->4->1->2

program huan; const

maxn=90;

10

var

n,s,t,i,j:integer;

dist:array[1..maxn,1..maxn] of real; prev:array[1..maxn,1..maxn] of 0..maxn; procedure init; var

m,i,u,v:integer; begin

assign(input,'huan.in'); reset(input);

assign(output,'huan.out'); rewrite(output); readln(n,m);

fillchar(prev,sizeof(prev),0); for u:=1 to n do for v:=1 to n do dist[u,v]:=1e10; for i:=1 to m do begin

readln(u,v,dist[u,v]); prev[u,v]:=u; end; end;

procedure floyd; var

i,j,k:integer; begin

for k:=1 to n do for i:=1 to n do for j:=1 to n do

if (dist[i,k]+dist[k,j]

dist[i,j]:=dist[i,k]+dist[k,j]; prev[i,j]:=prev[k,j]; end; end;{floyd}

procedure print(i,j:integer); begin if i=j

then write(i)

else if prev[i,j]=0

then write('No Circle!') else begin

print(i,prev[i,j]);

11

write('->',j); end; end;{print} begin init; floyd;

for i:=1 to n do begin

if dist[i,i]<>1e10 then begin

write(i,' ');

write(dist[i,i]:0:0,' '); print(i,prev[i,i]); writeln; end; end;

close(input); close(output); end.

输入一张无向图,指出该图中哪些结点对之间有路。该问题通常采用传递闭包的计算方法。 【输入】

n(顶点数,1≤n≤20) e(边数,1≤e≤210)

以下e行,每行为有边连接的一对顶点 【输出】

k行,每行两个数,为存在通路的顶点对序号i,j(i

【输入样例】 6 5 1 5 1 6 2 3 4 6 5 6

【输出样例】 1 4 1 5 1 6 2 3 4 5 4 6

12

搜索更多关于: 信息学竞赛图论习题 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

dist:array[1..maxn,1..maxn] of real; prev:array[1..maxn,1..maxn] of 0..maxn; procedure init; var m,i,u,v:integer; begin assign(input,'floyd.in'); reset(input); assign(output,'floyd.out'); rewrite(output); readln(n,m); fillchar(prev,sizeof(prev),0); for u:=1 to n do for v:=1 to n do dist[u,v]:=1e10; for i:=1 to m

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com