2014.10.31我出的模拟赛【藏宝图】

藏宝图(treas.*)

背景

  Czy爬上黑红树,到达了一个奇怪的地方……

题目描述

Czy发现了一张奇怪的藏宝图。图上有n个点,m条无向边。已经标出了图中两两之间距离dist。但是czy知道,只有当图刚好又是一颗树的时候,这张藏宝图才是真的。如果藏宝图是真的,那么经过点x的边的边权平均数最大的那个x是藏着宝物的地方。请计算这是不是真的藏宝图,如果是真的藏宝之处在哪里。

格式

输入数据第一行一个数T,表示T组数据。

对于每组数据,第一行一个n,表示藏宝图上的点的个数。

接下来n行,每行n个数,表示两两节点之间的距离。

输出一行或两行。第一行”Yes”或”No”,表示这是不是真的藏宝图。

若是真的藏宝图,第二行再输出一个数,表示哪个点是藏宝之处。

样例输入

2

3

0 7 9

7 0 2

9 2 0

3

0 2 7

2 0 9

7 9 0

样例输出

Yes

1

Yes

3

样例解释:第一棵树的形状是1--2--312之间的边权是723之间是2

 第二棵树的形状是2--1--321之间的边权是213之间是7

数据范围

对于30%数据,n<=50,1<=树上的边的长度<=10^9

对于50%数据,n<=600.

对于100%数据,1<=n<=2500,除30%小数据外任意0<=dist[i][j]<=10^9,T<=5

 

先不管它是不是树,跑最小生成树,算出在MST条件下的dist2数组。如果它是树,显然dist和dist2完全一样。如果不一样,这个图一定不是树。另外Kruskal会被卡。第二问在第一问的条件下怎么搞都行了

http://www.cnblogs.com/zhber/p/4035894.html

——by zhber,转载请注明来源
原文地址:https://www.cnblogs.com/zhber/p/4064902.html