文号
t59205
阅读
3235
回复
2
收藏
3
C++遇到了难题,希望大神帮忙解答。。。
2013/08/03
IP:北京
4.道路修建
(road.pas/c/cpp)
【问题描述】
小明所在的城市是一个依赖旅游而发展的城市,现在市长想把市里的几个区域用道路连接起来,每对区域之间修路所需的花费都已经计算出了,现在问题就是用最小的花费把这几个区域用道路都全部连通。但是只要智商正常的人都能看出这是图的最小生成树,所以小明的市长不可能连这个问题都搞不定的。小明的市长把最小生成树求出来后发现市里面两个最著名景点之间的路会变得很长,为了避免外地游客不和谐的呼吁声,市长决定要保持这两个景点之间道路最短。也就是说在这两个景点之间的道路为最短路的情况下再将其他各个区域修路连通且花费最少。由于小明的市长只在小学一年级学过一学期的信息学,所以对于这个问题他还是有些伤脑筋,于是他找到了你……
【输入】
第一行一个数n,代表有n个区域(n<=1000)
第二行两个数a,b表示那两个著名景点的编号
接下来有n行,每行有n个数,第i行的第j个数就代表编号为i的区域到编号为j的区域修路所需的花费(均大于0,若为0则是不能修路)
【输出】
满足条件的总花费,若两著名景点之间不能连通则输出’bad test data’
【输入输出样例】
  XXXXXXX
  
  road.out
  
  5
  2 5
  0 5 0 1  3
  5 0 4 0  0
  0 4 0 3  10
  1 0 3 0  2
  3 0 10  2 0
  
  12
  
注:最小生成树应为(1-4)+(4-5)+(4-3)+(3-2)=10
但是要保证2到5为最短路所以要保证(2-1-5)这条最短路在树中,此时再加上(4-1),(3-4)等于12
13年5个月前IP:未同步
555048
1楼
去CSDN把,多给点分,有人给你答案的。
引用
评论
13年5个月前IP:未同步
555205
2楼
格式调整一下,看起来太蛋疼
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的