codeForces 472D 最小生成树
题目大意:给出一个图中点的两两距离,问是否是一棵树,若是,求出平均边权最大的点
prim最小生成树,若原图是树,则最小生成树的距离就是原距离。否则不是。
搞出来树了,第二问随便dfs就好了。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
#define N 2550
using namespace std;
int T,n,fa[N],pp[N];
long long dis[N][N],minn[N],a[N][N],ans,num;
bool boo;
double maxn;
int final;
int head[N],e=1;
struct edge{
int u,v,w,next;
}ed[2*N];
void add(int u,int v,int w){
ed[e].u=u; ed[e].v=v; ed[e].w=w;
ed[e].next=head[u]; head[u]=e++;
}
bool bo[N];
void dfs(int x,int now,long long d){
if(bo[now])return;
bo[now]=1;
dis[x][now]=d;
for(int i=head[now];i;i=ed[i].next)
dfs(x,ed[i].v,d+ed[i].w);
}
int main()
{
//freopen("treas.in","r",stdin);
//freopen("treas.out","w",stdout);
scanf("%d",&T);
while(T--){
memset(head,0,sizeof head); e=1;
memset(bo,0,sizeof bo);
memset(minn,0x7f,sizeof minn);
scanf("%d",&n); boo=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%lld",&a[i][j]);
for(int i=1;i<=n;i++){
minn[i]=a[1][i];
pp[i]=1;
}
bo[1]=1; fa[1]=0;
for(int i=1;i<n;i++)
{
int now=0;
for(int j=1;j<=n;j++)
if(!bo[j]&&minn[j]<minn[now])
now=j;
bo[now]=1; fa[now]=pp[now];
add(pp[now],now,a[pp[now]][now]);
add(now,pp[now],a[now][pp[now]]);
for(int j=1;j<=n;j++)
if(!bo[j]&&a[now][j]<minn[j]){
minn[j]=a[now][j];
pp[j]=now;
}
}
//for(int i=1;i<=n;i++)
//printf("%d %d\n",i,fa[i]);
for(int i=1;i<=n;i++){
memset(bo,0,sizeof(bo));
dfs(i,i,0);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
//printf("%lld ",dis[i][j]);
if(a[i][j]!=dis[i][j]){
boo=1; break;
}
}if(boo==1) break;
//printf("\n");
}if(boo==1){printf("No\n"); continue;}
maxn=0; final=1;
for(int i=1;i<=n;i++){
num=ans=0;
for(int j=head[i];j;j=ed[j].next){
num++;
ans+=ed[j].w;
}
if((double)(1.0*ans)/(1.0*num)>maxn){
final=i;
maxn=(double)(1.0*ans)/(1.0*num);
}
}
printf("Yes\n%d\n",final);
}
}
codeForces 472D 最小生成树的更多相关文章
- Xor-MST CodeForces - 888G (最小生成树,分治)
		大意: n结点无向完全图, 给定每个点的点权, 边权为两端点异或值, 求最小生成树 
- Codeforces 472D
		看官方题解提供的是最小生成树,怎么也想不明确.you can guess and prove it! 看了好几个人的代码.感觉实现思路全都不一样,不得不佩服cf题目想法的多样性 以下说说我自己的理解, ... 
- Mobile Phone Network CodeForces - 1023F (最小生成树)
		大意: 无向图, 其中k条边是你的, 边权待定, m条边是你对手的, 边权已知. 求如何设置边权能使最小生成树中, 你的边全被选到, 且你的边的边权和最大. 若有多棵最小生成树优先取你的边. 先将$k ... 
- The Shortest Statement CodeForces - 1051F 最小生成树+并查集+LCA
		题目描述 You are given a weighed undirected connected graph, consisting of n vertices and mm edges. You ... 
- Abandoning Roads CodeForces - 1149D (最小生成树)
		大意: 给定无向图, 边权只有两种, 对于每个点$x$, 输出所有最小生成树中, 点$1$到$x$的最短距离. 先将边权为$a$的边合并, 考虑添加边权为$b$的边. 每条路径只能经过每个连通块一次, ... 
- ACM第一阶段学习内容
		一.知识目录 字符串处理 ................................................................. 3 1.KMP 算法 .......... ... 
- codeforces472D
		Design Tutorial: Inverse the Problem CodeForces - 472D 给你了一个 n × n最短距离矩阵.(即矩阵中dis[u][v]为u点到v点的最短距离), ... 
- 正睿OI国庆DAY2:图论专题
		正睿OI国庆DAY2:图论专题 dfs/例题 判断无向图之间是否存在至少三条点不相交的简单路径 一个想法是最大流(后来说可以做,但是是多项式时间做法 旁边GavinZheng神仙在谈最小生成树 陈主力 ... 
- Educational Codeforces Round 3   E. Minimum spanning tree for each edge (最小生成树+树链剖分)
		题目链接:http://codeforces.com/contest/609/problem/E 给你n个点,m条边. 问枚举每条边,问你加这条边的前提下组成生成树的权值最小的树的权值和是多少. 先求 ... 
随机推荐
- Angular v6 正式发布
			Angular 6 正式发布 Angular 6 已经正式发布了!这个主要版本并不关注于底层的框架,更多地关注于工具链,以及使 Angular 在未来更容易快速推进. 作为发布的一部分,我们同步了主要 ... 
- Javascript、CSS、HTML面试题
			1 JS中的三种弹出式消息提醒(警告窗口.确认窗口.信息输入窗口)的命令是什么? alert confirm prompt 2声明一个已经存在一个CSS有几种方式? 1.导入一个已经存 ... 
- sqlplus 分析执行计划
			转载 http://xm-koma.iteye.com/blog/1048451 对于oracle9i,需要手工设置plustrace角色,步骤如下: 1.在SQL>connect sys/密码 ... 
- java泛型应用实例 - 自定义泛型类,方法
			近 短时间需要使用泛型,就研究了下,发现网上的问关于泛型的文章都是讲原理的, 很少有提到那里用泛型比较合适, 本文就泛型类和泛型方法的使用给出两 个典型应用场景. 例如一个toString的泛型方法, ... 
- LindDotNetCore~框架介绍及特色功能(有点springboot的意思)
			LindDotNetCore模块介绍 大叔博客 LindDotNetCore相关模块介绍 [x] 全局都是依赖DI [x] 消息队列 [x] NoSql [x] Caching [x] 仓储 [x] ... 
- R实战 第七篇:网格(grid)
			grid包是R底层的图形系统,可以绘制几乎所有的图形.除了绘制图形之外,grid包还能对图形进行布局.在绘图时,有时候会遇到这样一种情景,客户想把多个代表不同KPI的图形分布到同一个画布(Page)上 ... 
- Mybatis 系列4
			上篇系列3中 介绍了properties与environments, 本篇继续讲剩下的配置节点之一:typeAliases. typeAliases节点主要用来设置别名,其实这是挺好用的一个功能, 通 ... 
- redis资源未释放引发的问题
			一.redis资源未释放的起因: N年前,在修改一个古老程序时,不小心把redis释放的这块给干掉了, if (jedis != null) { if (!isInProcess) { jedis.d ... 
- python爬虫入门(七)Scrapy框架之Spider类
			Spider类 Spider类定义了如何爬取某个(或某些)网站.包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item). 换句话说,Spider就是您定义爬取的动作 ... 
- 5月第2周业务风控关注 | 央行:严禁未经授权认可的APP接入征信系统
			本文由 网易云发布. 易盾业务风控周报每周呈报值得关注的安全技术和事件,包括但不限于内容安全.移动安全.业务安全和网络安全,帮助企业提高警惕,规避这些似小实大.影响业务健康发展的安全风险. 1.央行 ... 
