吝啬的国度

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述
在一个吝啬的国度里有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

#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
vector<int>a[100005];
int b[100005],n,s;
void dfs(int x,int y){
for (int i = 0; i <a[x].size();i++)
if (a[x][i] != y)
dfs(a[x][i],b[a[x][i]]=x);
return;
}
int main(){
int M,x,y;
scanf("%d",&M);
while (M--){
scanf("%d%d",&n,&s);
for (int i = 1; i <n; i++){
a[i].clear();
}
for (int i = 1; i <n; i++){
scanf("%d%d",&x,&y);
a[x].push_back(y); //相当二维数组
a[y].push_back(x);
}
b[s] = -1;//与S相等则为-1
dfs(s,-1);
for (int i = 1; i <= n; i++)
printf("%d ",b[i]);
printf("\n");
}
return 0;
}

 

#include<iostream>
#include<vector>
#include<iterator>
using namespace std;
void MakeRoot(int search,int root,const vector<vector<int> >& g,vector<int> &result)
{
for(vector<int>::const_iterator it=g[search].begin();it!=g[search].end();++it)
{
if(result[*it]==0)
{
result[*it]=search;
MakeRoot(*it,root,g,result);
}
}
}
int main()
{
int n;
cin>>n;
while(n--)
{
int m,a,b;
cin>>m; int root;
cin>>root; //m个点
vector<vector<int> > g(m+1,vector<int>());
for(int i=0;i!=m-1;i++)
{
cin>>a>>b;
g[a].push_back(b);
g[b].push_back(a);
}
vector<int> result(m+1);
result[root]=-1;
MakeRoot(root,root,g,result);
copy(result.begin()+1,result.end(),ostream_iterator<int>(cout," "));
}
}

nyoj2-吝啬的国度的更多相关文章

  1. nyoj20_吝啬的国度_DFS

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

  2. ACM题目————吝啬的国度

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

  3. nyoj------20吝啬的国度

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

  4. nyoj 20 吝啬的国度

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

  5. 吝啬的国度(dfs+vector)

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

  6. Nyoj 吝啬的国度(图论&&双DFS)

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

  7. NYoj_20吝啬的国度

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

  8. 吝啬的国度 nyoj

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

  9. ny20 吝啬的国度

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

  10. nyist 20 吝啬的国度(dfs)

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

随机推荐

  1. linux 7.2 下安装maven

    由于现有项目采用maven打包所以需要安装maven 1.创建目录 mkdir /maven cd /maven 2.下载解压maven,这里选择maven版本为3.5.3 wget http://m ...

  2. gdb的follow-fork-mode使用以及多线程操作

    对于多线程,如果希望让其他线程不执行,只有调试线程执行,使用 set scheduler-locking [on|off|step]

  3. 介绍C++ STL常用模板使用方法的相关资料

    1.vector的几种初始化及赋值方式

  4. HDU 4518

    整理一下思路,明天再写... 这道题,其实就是求包含大于10的斐波那切数字的第K(K是斐波那契数)个数.注意到斐波那契数的爆炸性增长,所以在范围 内的符合要求的F数并不多吧.比如求第K个F数,那么,前 ...

  5. hdu5355 思维+爆搜

    pid=5355">http://acm.hdu.edu.cn/showproblem.php?pid=5355 Problem Description There are m sod ...

  6. HDU 5291(Candy Distribution-差值dp)

    Candy Distribution Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  7. H3C子接口配置要点及实例说明

     类型一:以太网子接口配置要点(单臂路由)  第一步:在路由器对端的交换机上配置好vlan信息(如vlan10/vlan20)  第二步:将交换机上与路由器直接相连的以太口配置成trunk口并同意 ...

  8. C/C++中字符串String及字符操作方法

    本文总结C/C++中字符串操作方法,还在学习中,不定期更新. .. 字符串的输入方法 1.单个单词能够直接用std::cin,由于:std::cin读取并忽略开头全部的空白字符(如空格,换行符,制表符 ...

  9. linux logo的格式【转】

    本文转载自:http://blog.csdn.net/xiayu98020214/article/details/7394100 =================================== ...

  10. ES Segment Memory——本质上就是segment中加到内存的FST数据,因此segment越多,该内存越大

    ElasticSearch优化系列四:ES的heap是如何被瓜分掉的 转自:https://www.jianshu.com/p/f41b706db6c7 以下分别解读几个我知道的内存消耗大户: Seg ...