描述

在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来。现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设你不走重复的路)。
输入
第一行输入一个整数M表示测试数据共有M(1<=M<=5)组
每组测试数据的第一行输入一个正整数N(1<=N<=100000)和一个正整数S(1<=S<=100000),N表示城市的总个数,S表示参观者所在城市的编号
随后的N-1行,每行有两个正整数a,b(1<=a,b<=N),表示第a号城市和第b号城市之间有一条路连通。
输出
每组测试数据输N个正整数,其中,第i个数表示从S走到i号城市,必须要经过的上一个城市的编号。(其中i=S时,请输出-1)

样例输入
1
10 1
1 9
1 8
8 10
10 3
8 6
1 2
10 4
9 5
3 7
样例输出
-1 1 10 10 9 8 3 1 1 8
   因为给定的城市N的数目太大,建立数组需要用到#include<vector>,vector就是一个不定长数组,vector<int>a就是一个类似于int a[]的整数数组,只不过他的长度不确定,可以用a.size()读取他的长度。而vector<int>a[max]就是一个二维数组,只是第一维的大小是固定的(不超过max),二维的大小就不固定了,这道题之所以用到vector就是利用了他的不定长,如果直接建立二维数组a[n][n],n太大了,这样的二维数组绝对超出内存。(1)头文件#include<vector>.(2)创建vector对象,vector<int> vec;(3)尾部插入数字:vec.push_back(a);(4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。(5)向量大小:vec.size();
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<vector>
#include<iostream>
using namespace std;
int f[100100];
vector<int>v[100005];
void dfs(int s)
{int i;for(i=0; i<v[s].size(); i++){if(f[v[s][i]])continue;f[v[s][i]]=s;dfs(v[s][i]);}
}
int main()
{int i,j,n,s,t,a,b;scanf("%d",&t);while(t--){memset(f,0,sizeof(f));memset(v,0,sizeof(v));scanf("%d%d",&n,&s);f[s]=-1;for(i=1; i<n; i++){scanf("%d%d",&a,&b);v[a].push_back(b);v[b].push_back(a);}dfs(s);for(i=1; i<=n; i++){printf("%d",f[i]);if(i==n)printf("\n");else printf(" ");}}return 0;
}

NYOJ 20 吝啬的国度(深搜)相关推荐

  1. NYOJ 20 吝啬的国度(深搜)

    描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设 ...

  2. NYOJ 20 吝啬的国度 广度优先搜索

    吝啬的国度 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有 ...

  3. NYOJ 20 吝啬的国度 (搜索)

    吝啬的国度 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有 ...

  4. NYOJ 20 吝啬的国度 续

    还是<吝啬的国度>,研读了别人的较为高效的代码,无论是时间开销,还是空间开销都要小很多啊,截图为证: 我的所有运行: 52ms的是我参照别人的写的代码,时间开销比我的小将近一半,内存开销仅 ...

  5. NYOJ 20 吝啬的国度

    吝啬的国度 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市 ...

  6. 《图论》— NYOJ 20 吝啬的国度

    吝啬的国度 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有 ...

  7. 题目20: 吝啬的国度

    吝啬的国度 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市 ...

  8. nyoj-20-吝啬的国度(深搜)

    吝啬的国度 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述 在一个吝啬的国度里有N个城市.这N个城市间仅仅有N-1条路把这个N个城市连接起来.如今,Tom在第S号城市 ...

  9. NOJ 20 吝啬的国度

    开始做深搜的题,这是一种比较常见的递归,就是直接看去的点是从那来的,标记一下避免重复搜. 深搜的注意个人认为,1,要在一定范围内一般是在递归在1e4的范围内: 2,就是要注意标记,不然也可能导致超时的 ...

最新文章

  1. threadlocal用法_ThreadLocal源码分析
  2. python输出文本-Python基础练习,查询文本内容并输出;
  3. [原理篇] 逻辑回归
  4. PriorityQueue源码解析
  5. SAPGUI里实现自定义的语法检查
  6. .net生成随机字符串
  7. html a标签有value,html里面a标签里有value吗?
  8. freertos 创建互斥量_freertos任务通信
  9. JAVA正则表达式4种常用功能 [转]
  10. 你不知道网络安全有多严峻
  11. LOGO 8.3 Web Server功能
  12. ROS下利用realsense采集RGBD图像合成点云
  13. BUCK降压斩波电路MATLAB SIMULINK仿真
  14. Opencv-图像ROI与ROI操作
  15. 计算机中的三类总线是什么,计算机中三总线是什么意思
  16. NEON技术粗浅认识
  17. 专转本-微积分极限、函数等真题汇编
  18. 线性数据与非线性数据的区别
  19. ceph admin socket机制
  20. WSL/Windows Subsystem for Linux based on PICO

热门文章

  1. pycharm快捷键不能用了
  2. torch动态学习率代码
  3. opencv mat2 ffmpeg frame
  4. jtree 默认展开树的全部节点
  5. 双边滤波--OpenCV实现
  6. 同规格装箱问题c语言算法,装箱问题C语言实现(算法分析报告)(4页)-原创力文档...
  7. oracle rac 组播,Oracle 11g RAC安装测试组播
  8. linux suse 共享目录_SUSE Linux 创建NFS共享文件夹
  9. java文件分割合并_java实现文件分割与合并 类示例源码
  10. linux yum 安装mysql_Linux下使用yum安装MySQL