nyoj------20吝啬的国度
时间:2022-05-05
本文章向大家介绍nyoj------20吝啬的国度,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
吝啬的国度
时间限制: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
来源经典题目上传者张云聪这道题是一道比较基础的图论题。只需要遍历图即可.............!采用邻接表存位点,然后遍历即可,至于采用什么遍历,多样...........。代码:
1 //简单的链式前向星建图什么的
2 #include<iostream>
3 #include<cstdio>
4 #include<cstring>
5 #include<cstdlib>
6 using namespace std ;
7 const int maxn = 100005 ;
8 struct edge
9 {
10 int to; //目的地
11 int next; //下一个指针的坐标
12 };
13 edge str[2*maxn];
14 int head[maxn]; //头指针
15 int ans[maxn];
16 bool res[maxn];
17 void dfs(int father)
18 {
19 for(int i=head[father] ; i!=-1 ; i=str[i].next )
20 {
21 if(0==res[str[i].to])
22 {
23 ans[str[i].to]=father; //记录前一个点
24 res[str[i].to]=true;
25 dfs(str[i].to);
26 }
27 }
28 }
29 int main()
30 {
31 int m,n,s,a,b,i;
32 scanf("%d",&m);
33 while(m--)
34 {
35 scanf("%d%d",&n,&s);
36 //建立无向图
37 memset(head , -1 , sizeof(head));
38 memset(ans,-1,sizeof(ans)); //设置一个答案数组
39 memset(res,false,sizeof(res));
40 for(i=1;i<=(n-1);i++)
41 {
42 scanf("%d%d",&a,&b);
43 str[i].to=b;
44 str[i+n-1].to=a;
45 str[i].next=head[a];
46 str[i+n-1].next=head[b];
47 head[a]=i;
48 head[b]=i+n-1;
49 }
50 res[s]=true;
51 dfs(s); //从s点出发
52 for(i=1;i<=n;i++)
53 printf("%dn",ans[i]);
54 }
55 return 0;
56 }
- Nodejs学习笔记(三)--- 模块
- 使用JClouds在Java中获取和发布云服务器
- Silverlight单元测试框架
- Enterprise Library深入解析与灵活应用(2): 通过SqlDependency实现Cache和Database的同步
- 让你感觉不真实的13个伟大科学成就和发现
- 分析Silverlight跨域调用
- Spring集成RabbiMQ-Spring AMQP新特性
- Nodejs学习笔记(二)--- 事件模块
- 巧用FireFox来调试Silverlight
- Nodejs学习笔记(一)--- 简介及安装Node.js开发环境
- WCF后续之旅(7):通过WCF Extension实现和Enterprise Library Unity Container的集成
- 区块链技术(一):Truffle开发入门
- Nodejs学习笔记(一)——初识Nodejs
- RabbitMQ入门-Topic模式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Guava字符串的处理
- Phishing
- Guava Cache用法介绍(极简版)
- Linux Netcat 命令——网络工具中的瑞士军刀
- __all__ 是干嘛用的?
- 业务视角谈谈Kafka(第一篇)
- 面试必问:session,cookie和token的区别
- 14-2常见软件包管理任务
- Pytest之skip、skipif、xfail
- 为什么spring不推荐@Autowired注入,提示:Field injection is not recommended
- 使用springboot发送复杂类型正文的邮件
- 业务视角谈谈Kafka(第三篇)
- 图文详解互联网根基之HTTP
- Jenkins部署异常:报错 TomcatManagerException: FAIL - Unable to delete
- Spring Boot打包的jar运行的时候提示:没有主清单属性