Gym - 100513K :Treeland (按距离还原一棵树)
2024-08-29 14:21:40
题意:一个顶点数为N的生成树,对于每个点i,我们按照与i的距离给出顺序,即dis i 1<=dis i 2<=dis i 3<=...,现在让你输出N-1条边,即还原这棵树。
思路:首先应该得到距离为1的点对,那些肯定是树边,然后这样得到的树边可能<N-1,后面不容易判定哪些是树边。搜索什么的都不好搞。
正解:先假定一个点为树根,那么我们按照距离根的距离由远到近来得到树边。这样保证了得到的树边由下指向上,保证了刚刚好N-1条边。
3
2
1 2
2 1
5
1 4 5 3 2
2 3 4 1 5
3 4 2 5 1
4 3 1 5 2
5 4 3 1 2
3
1 3 2
2 1 3
3 1 2
Output
2 1 2 3
3 4
5 4
4 1 2 1
3 1
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
int a[maxn][maxn],vis[maxn];
int main()
{
int T,N;
scanf("%d",&T);
while(T--){
scanf("%d",&N);
rep(i,,N) rep(j,,N) scanf("%d",&a[i][j]);
int now=N;
while(true){
int x=a[][now],y=;
while(vis[a[x][y]]) y++;
printf("%d %d\n",a[x][y],x);
vis[x]=; now--;
if(now==) break;
}
puts("");
memset(vis,,sizeof(vis));
}
return ;
}
最新文章
- javascript数据结构-栈
- Linux系统安全保护措施
- HDOJ 4336 Card Collector
- 对于top.ascx里面可以不可以放置css的文件进行一个讲解
- hdu2368Alfredo&#39;s Pizza Restaurant
- HDU 5234 Happy birthday 动态规划(三维数组)
- tornado之文件上传的几种形式form,伪ajax(iframe)
- Java中增强for循环的用法
- 用Portable.BouncyCastle来进行加解密的代码demo
- wx支付
- 【资料下载区】【iCore1S相关代码、资料下载地址】更新日期2017/10/09
- wdk驱动开发的特点
- 2015 HIAST Collegiate Programming Contest H
- MAC apache服务器搭建
- cnblogs第一篇文章
- 二进制入门-打造Linux shellcode基础篇
- java Random.nextInt()方法
- python2 python3共存解决方案
- WPF自定义ComboBox
- cocos2dx 3.0研究(1)-- hello world程序