nyoj 20-吝啬的国度 (DFS)
20-吝啬的国度
内存限制:64MB
时间限制:1000ms
Special Judge: No
accepted:12
submit:43
题目描述:
输入描述:
第一行输入一个整数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 拓展:
free对内存进行释放,主要是将malloc、new、realloc等申请的内存进行释放
STL中的vector是进行动态内存的追加,用free进行内存释放会使编译器不清楚从哪开始释放 分析:
①、在数据结构方面我们选择二维vector,用vector来存对应城市相邻的城市,用.size()就可以得到与该城市相邻的城市个数
②、因为DFS是线性的、回溯型搜索方式,将会直接或回溯式的找到前面直接相邻的城市 步骤、
①、通过vector建立两个城市的双向距离关系
②、使用dfs从入口点s进入,将每一个相邻城市的前驱都赋值为对应的s 核心代码:
void dfs(int s)
{
for(int i = ; i < A[s].size(); ++ i)
{
if(f[A[s][i]]) continue;
f[A[s][i]] = s;
dfs(A[s][i]);
}
}
C/C++代码实现(AC):
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <stack>
#include <map>
#include <queue> using namespace std;
const int MAXN = 1e5 + ;
int f[MAXN];
vector <int> A[MAXN]; void init(int n)
{
while(n --)
{
int a, b;
scanf("%d%d", &a, &b);
A[a].push_back(b);
A[b].push_back(a);
}
} void dfs(int s)
{
for(int i = ; i < A[s].size(); ++ i)
{
if(f[A[s][i]]) continue;
f[A[s][i]] = s;
dfs(A[s][i]);
}
} int main()
{
int t;
scanf("%d", &t);
while(t --)
{
int n, s;
memset(f, , sizeof(f));
memset(A, , sizeof(A));
scanf("%d%d", &n, &s);
init(n - ); dfs(s);
f[s] = -;
for(int i = ; i < n; ++ i)
printf("%d ", f[i]);
printf("%d\n",f[n]);
}
return ;
}
nyoj 20-吝啬的国度 (DFS)的更多相关文章
- NYOJ 20.吝啬的国度-DFS+STL(vector保存上一节点)
整理代码 吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第 ...
- nyoj 20 吝啬的国度
吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市, ...
- NYOJ 20 吝啬的国度 (深搜)
题目链接 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号 ...
- nyist 20 吝啬的国度(dfs)
吝啬的国度 题目描述: 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来. 现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市, 必须经过的前一 ...
- nyoj 题目20 吝啬的国度
吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市, ...
- 吝啬的国度(dfs+vector)
吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市, ...
- 【ACM】吝啬的国度 - DFS (图)
吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市, ...
- NYOJ题目20吝啬的国度
-----------------------------------------n-1条边的无向连通图是一棵树,又因为树上两点之间的路径是唯一的,所以解是唯一的.(注意并不一定是二叉树,所以最好采用 ...
- Nyoj 吝啬的国度(图论&&双DFS)
描述在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设你 ...
随机推荐
- My Idea About ID wly_sh (关于用户名 wly_sh 的猜想)
I Wanna Say Is That- There's a guy called wsh in our computer room. That guy registered a blog in CS ...
- 【Redis】Could not get a resource from the pool 实乃集群配置问题
先说些题外话~自上次确诊为鼻窦炎+过敏性鼻炎到现在已经一个月了,最初那会,从下午到晚上头疼难忍.大概是积劳成疾,以前流鼻涕.打喷嚏的时候从来没有注意过,结果病根一下爆发. 关键在于锁定问题,开始治疗一 ...
- 一文了解Mysql
文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. Redis系列到上一篇已经全部结束了,从本篇开始进入Mysql系列文章专题.本篇作为Mysql系列专题的开篇文 ...
- date命令查看与修改
在我们使用linux服务器时,肯定会遇到Linux服务器时间不准确的情况如何查看Linux系统的时间,如何修改Linux系统上的当前时间呢. 查看Linux系统当前时间: 命令: date +回车 修 ...
- 【原创】(九)Linux内存管理 - zoned page frame allocator - 4
背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...
- day04整理
目录 内容回顾 变量 什么是变量 变量的组成 变量名的命名规范 注释 单行注释 多行注释 turtle库的使用 一.数据类型基础 一.数字类型 (一)整形 (二)浮点型 二.字符串类型 (一)作用:姓 ...
- [随机化算法] 听天由命?浅谈Simulate Anneal模拟退火算法
Simulate Anneal模拟退火算法,是一种用于得到最优解的随机化算法. 如果可以打一手漂亮的随机化搜索,也许当你面对一筹莫展的神仙题时就有一把趁手的兵器了. 这篇题解将教你什么?SA的基本思路 ...
- Android dos操作
adb shell 开Androidls 列表cd +目录名 打开目 ...
- unity 序列帧播放
[SerializeField] private Image m_ScreenImage; //序列帧播放的image [SerializeField] ; // 一秒播放的帧数 [Serialize ...
- vue订阅者模式
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...