NYOJ 20 吝啬的国度 续
还是《吝啬的国度》,研读了别人的较为高效的代码,无论是时间开销,还是空间开销都要小很多啊,截图为证:
- 输入的测试数据为:
- 10 1
- 8 10
- 10 3
- 3 7
- 10 4
- 1 9
- 1 8
- 8 6
- 1 2
- 9 5
#include <stdio.h>
#include <memory.h>int map[100005];void Adjust(int currentCity)
{int priorCity = map[currentCity];if (priorCity != 0){Adjust(priorCity);map[priorCity] = currentCity;}
}int main()
{int i, testNum, cityNum, startCity, cityA, cityB;scanf("%d", &testNum);while (testNum-- != 0){scanf("%d%d", &cityNum, &startCity);memset(map, 0, sizeof(int)*cityNum + 1);for (i = 1; i < cityNum; i++){scanf("%d%d", &cityA, &cityB);if (map[cityB] == 0){map[cityB] = cityA;}else{Adjust(cityA);map[cityA] = cityB;}}Adjust(startCity);map[startCity] = - 1;for (i = 1; i < cityNum; i++){printf("%d ", map[i]);}printf("%d\n", map[i]);}return 0;
}
思路(二)是我自己的,因为我发现不考虑方向建立图时,会出现方向的多次调整,影响效率,所以我就想在建立图的过程中就考虑方向,代码如下:
#include <stdio.h>
#include <memory.h>int map[100005];
bool flag[100005];void AdjustIncludeStart(int currentCity)
{int priorCity = map[currentCity];if (priorCity != 0){AdjustIncludeStart(priorCity);map[priorCity] = currentCity;flag[priorCity] = true;}
}void AdjustExcludeStart(int currentCity)
{int priorCity = map[currentCity];if (priorCity != 0){AdjustExcludeStart(priorCity);map[priorCity] = currentCity;}
}int main()
{int i, testNum, cityNum, startCity, cityA, cityB;scanf("%d", &testNum);while (testNum-- != 0){scanf("%d%d", &cityNum, &startCity);memset(map, 0, sizeof(int)*cityNum + 1);memset(flag, false, sizeof(bool)*cityNum + 1);map[startCity] = - 1;flag[startCity] = true;for (i = 1; i < cityNum; i++){scanf("%d%d", &cityA, &cityB);if (flag[cityA]){if (map[cityB] != 0){AdjustIncludeStart(cityB);}map[cityB] = cityA;flag[cityB] = true;}else if (flag[cityB]){if (map[cityA] != 0){AdjustIncludeStart(cityA);}map[cityA] = cityB;flag[cityA] = true;}else{if (map[cityB] == 0){map[cityB] = cityA;}else{AdjustExcludeStart(cityA);map[cityA] = cityB;}}}for (i = 1; i < cityNum; i++){printf("%d ", map[i]);}printf("%d\n", map[i]);}return 0;
}
NYOJ 20 吝啬的国度 续相关推荐
- NYOJ 20 吝啬的国度(深搜)
描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设 ...
- NYOJ 20 吝啬的国度 广度优先搜索
吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有 ...
- NYOJ 20 吝啬的国度 (搜索)
吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有 ...
- NYOJ 20 吝啬的国度(深搜)
描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设 ...
- NYOJ 20 吝啬的国度
吝啬的国度 时间限制: 1000 ms | 内存限制: 65535 KB 难度: 3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市 ...
- 《图论》— NYOJ 20 吝啬的国度
吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有 ...
- 题目20: 吝啬的国度
吝啬的国度 时间限制: 1000 ms | 内存限制: 65535 KB 难度: 3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市 ...
- NOJ 20 吝啬的国度
开始做深搜的题,这是一种比较常见的递归,就是直接看去的点是从那来的,标记一下避免重复搜. 深搜的注意个人认为,1,要在一定范围内一般是在递归在1e4的范围内: 2,就是要注意标记,不然也可能导致超时的 ...
- 小白算法练习 NYOJ 吝啬的国度 dfs+邻接表
吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有 ...
最新文章
- ffmpeg与x264有什么区别?
- hive olap 数据仓库_数据仓库系统的实现和使用(含OLAP重点讲解)
- 求H21时的仿射变换要参考当前坐标系
- 快点来白嫖!黑马培训java多长时间
- 士兵杀敌(三)_RMQ(区间最值查询)
- 使用 ngrok(小米球)实现内网穿透映像到外网访问项目
- php dht爬虫,利用DHT网络,爬取bt种子。
- BOOST 升压电路调试笔记
- 总结安卓应用市场App首发活动规则
- 如何构建可出售的Pagewiz登陆页面模板
- Excel中ROUND、ROUNDUP、ROUNDDOWN函数详解
- ARMv8-A笔记一 ARM-A系列处理器介绍
- 京东数据分析工具,同行商家数据快速查看对比
- 台达变频器vfb—d参数表_台达DPS
- 电脑文件和百度网盘如何随时随地备份?
- python面试题解析(前端、框架和其他)
- 汉字unicode码表范围和常用汉字unicode码
- Elasticsearch宝典:从ELK到Elastic Stack
- linux开启启动服务的顺序,SUSE服务启动顺序
- LaTex安装与更新