hihocoder 1490 Tree Restoration
构造。
从最后一层开始往上构造。最后一层肯定都是叶子结点,距离为2的肯定是同一个父亲,确定好了父亲之后,可以确定上一层每个节点之间的距离,以及上一层每个节点到还未确定的叶子节点之间的距离。
#include<bits/stdc++.h>
using namespace std; int n,m,k;
vector<int>v[];
int A[],L[],h[];
int D[][];
int f[]; int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=m;i++) scanf("%d",&A[i]);
for(int i=;i<=m;i++)
{
while(A[i]--)
{
int x; scanf("%d",&x);
v[i].push_back(x);
}
}
for(int i=;i<=k;i++) scanf("%d",&L[i]),h[L[i]]=;
for(int i=;i<=k;i++) for(int j=;j<=k;j++) scanf("%d",&D[L[i]][L[j]]); for(int i=m;i>=;i--)
{
int last = ;
int now = ;
while()
{
if(now==v[i].size()) break; while()
{
if(h[v[i-][last]]==) last++;
else break;
} f[v[i][now]] = v[i-][last]; now++;
while()
{
if(now==v[i].size()) break;
if(D[v[i][now]][v[i][now-]]!=) {last++; break;}
f[v[i][now]] = v[i-][last]; now++;
}
} for(int j=;j<v[i].size();j++)
for(int t=;t<v[i].size();t++)
D[f[v[i][j]]][f[v[i][t]]]=D[v[i][j]][v[i][t]]-; for(int j=;j<v[i].size();j++)
for(int t=;t<=k;t++)
D[f[v[i][j]]][L[t]]=D[L[t]][f[v[i][j]]]=D[v[i][j]][L[t]]-;
} for(int i=;i<=n;i++)
{
printf("%d",f[i]);
if(i<n) printf(" ");
else printf("\n");
} return ;
}
hihocoder 1490 Tree Restoration的更多相关文章
- #1490 : Tree Restoration
微软 2017春招真题 题目 There is a tree of N nodes which are numbered from 1 to N. Unfortunately, its edges a ...
- 【微软2017年预科生计划在线编程笔试 B】Tree Restoration
[题目链接]:https://hihocoder.com/problemset/problem/1490 [题意] 给你一棵树的以下信息: 1.节点个数 2.给出树的每一层从左到右的顺序每个节点的编号 ...
- Tree Restoration Gym - 101755F (并查集)
There is a tree of n vertices. For each vertex a list of all its successors is known (not only direc ...
- hihocoder1490 Tree Restoration 模拟
There is a tree of N nodes which are numbered from 1 to N. Unfortunately, its edges are missing so w ...
- #1490 : Tree Restoration-(微软2017在线笔试)
输入n m km个数,表示每层的节点个数接下来m行是每层的节点,节点顺序是从左往右的k个叶子节点k*k个矩阵,表示叶子节点之间的距离 输出:每个节点的父亲节点编号,root节点是0 题解:1.很明显, ...
- Codeforces gym101755F Tree Restoration(拓扑排序)
题意: 一棵树,给出每个点的后代们,问你这棵树是否存在,存在就给出这棵树 n<=1000 思路: 对祖先->后代建立有向图,跑拓扑排序.跑的时候不断更新父亲并判断答案的存在性,同时注意一种 ...
- [hihoCoder#1381]Little Y's Tree
[hihoCoder#1381]Little Y's Tree 试题描述 小Y有一棵n个节点的树,每条边都有正的边权. 小J有q个询问,每次小J会删掉这个树中的k条边,这棵树被分成k+1个连通块.小J ...
- 【hihoCoder 1454】【hiho挑战赛25】【坑】Rikka with Tree II
http://hihocoder.com/problemset/problem/1454 调了好长时间,谜之WA... 等我以后学好dp再来看为什么吧,先弃坑(╯‵□′)╯︵┻━┻ #include& ...
- DFS序+线段树 hihoCoder 1381 Little Y's Tree(树的连通块的直径和)
题目链接 #1381 : Little Y's Tree 时间限制:24000ms 单点时限:4000ms 内存限制:512MB 描述 小Y有一棵n个节点的树,每条边都有正的边权. 小J有q个询问,每 ...
随机推荐
- TCP协议基础知识及wireshark抓包分析实战
TCP相关知识 应swoole长连接开发调研相关TCP知识并记录. 数据封包流程 如图,如果我需要发送一条数据给用户,实际的大小肯定是大于你发送的大小,在各个数据层都进行了数据的封包,以便你的数据能完 ...
- VS Code 配置删除左边单词快捷键(同Sublime 和 Atom)
VS Code 中删除一行的快捷键默认是 cmd + shift + k,或者使用简介 cmd + x,对于一个长期使用 Sublime 和 Atom 的程序猿来说,在VS Code 上删除行,特别是 ...
- expect 批量增加用户及配置密码
start.sh #!/bin/bash password="111111" username="test" if [ $# == 1 ] then usern ...
- 2017 国庆湖南Day2
期望得分:100+30+100=230 实际得分:100+30+70=200 T3 数组开小了 ..... 记录 1的前缀和,0的后缀和 枚举第一个1的出现位置 #include<cstdio& ...
- Spark Core 资源调度与任务调度(standalone client 流程描述)
Spark Core 资源调度与任务调度(standalone client 流程描述) Spark集群启动: 集群启动后,Worker会向Master汇报资源情况(实际上将Worker的资 ...
- [php]数组建立方式
1.$a[0]=..; $a[1]=..; $a[2]=..; $a[3]=..; 2.$a=array(1,2,3,4,5); 3.自定义数组 $a['logo']="qq"; ...
- 面向对象 ( OO ) 的程序设计——理解对象
本文地址:http://www.cnblogs.com/veinyin/p/7607938.html 1 创建自定义对象 创建自定义对象的最简单方法为创建 Object 的实例,并添加属性方法,也可 ...
- 【洛谷 P1502】 窗口的星星(扫描线)
题目链接 把每个星星作为左下角,做出长为\(w-0.5\),宽为\(h-0.5\)的矩形. \(-0.5\)是因为边框上的不算. 离散化\(y\)坐标. 记录\(2n\)个\(4\)元组\((x,y1 ...
- Islands and Bridges(POJ2288+状压dp+Hamilton 回路)
题目链接:http://poj.org/problem?id=2288 题目: 题意:求Hamilton 路径权值的最大值,且求出有多少条权值这么大的Hamilton路径. 思路:状压dp,dp[i] ...
- 基于canvas实现的fontawesome动态图标
由于还没有全部实现,实现了一些demo,demo地址在 https://github.com/jiangzhenfei/canvas-fontawesome 实现了动态loading 实现动态电池充电 ...