题意:一个顶点数为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 ;
}

最新文章

  1. javascript数据结构-栈
  2. Linux系统安全保护措施
  3. HDOJ 4336 Card Collector
  4. 对于top.ascx里面可以不可以放置css的文件进行一个讲解
  5. hdu2368Alfredo&#39;s Pizza Restaurant
  6. HDU 5234 Happy birthday 动态规划(三维数组)
  7. tornado之文件上传的几种形式form,伪ajax(iframe)
  8. Java中增强for循环的用法
  9. 用Portable.BouncyCastle来进行加解密的代码demo
  10. wx支付
  11. 【资料下载区】【iCore1S相关代码、资料下载地址】更新日期2017/10/09
  12. wdk驱动开发的特点
  13. 2015 HIAST Collegiate Programming Contest H
  14. MAC apache服务器搭建
  15. cnblogs第一篇文章
  16. 二进制入门-打造Linux shellcode基础篇
  17. java Random.nextInt()方法
  18. python2 python3共存解决方案
  19. WPF自定义ComboBox
  20. cocos2dx 3.0研究(1)-- hello world程序

热门文章

  1. Mysql无法创建函数解决办法
  2. eclipse同一个工作空间下分开多个项目
  3. iOS11 push控制器tabbar上移问题
  4. JITWatch工具
  5. java程序实现Unicode码和中文互相转换
  6. 在linux系统下Git源码系统的文件下载
  7. composer 更新国内镜像地址
  8. [原创]java WEB学习笔记05:Servlet中的ServletConfig对象
  9. P2455 [SDOI2006]线性方程组
  10. PyVim