AOJ-AHU-OJ-585 公路地图
2014-04-05 11:00
351 查看
公路地图
Time Limit: 1000 ms Case Time Limit: 1000 ms Memory Limit: 64 MB
Description
long long ago,cxlove是某国国王,掌控着n个城市,而且为了交通便捷,在城市与城市之间建立了公路,并且保证任意两个城市之间有且仅有一条路。简而言之,整个交通网是一个树型结构(PS:cxlove在很多年前就用了最小的代价,构造生成树,形成连通网络了)
这n个城市都编了号,标号分别为1,2……,n
在cxlove年轻的时候,一直定居在r1打拼,那就是所谓的首都吧~~~~
直到年迈的时候,cxlove本着由城市向农村发展的原则,准备迁都至r2。
首都作为一个国家的枢纽,地位非同一般。
当首都确定时,cxlove便会命令下属以首都为中心调查清楚整个国家交通网的情况。并采用了以下交通网表示法:对于每一个城市i,ai表示从首都到城市i的路径上的最后一个城市(除了i)。
cxlove已经拥有了r1为首都时的交通资料,如今首都城市更改,cxlove想要节省人力物力而不去重新统计交通网,希望你能给出以r2为首都的交通资料。
例如:1->2->3,如果城市1为首都,那么从1->2的路径中,最后一个城市是1,从1->3的路径中,最后一个城市是2
Input
一个整数 T,表示有 T 组测试数据。(1<=T<=30)
每组数据输入格式如下:
三个整数n,r1,r2,分别表示n个城市,原先的首都,新的首都。(1<=n<=10000,1<=r1!=r2<=n)
接下来n个整数a1,a2……,an,表示首都为r1时的的交通网,其中对于r1自己而言,记录为-1。
Output
每组输出一行整数,按标号顺序表示首都为r2时的交通网
Sample Input
Sample Output
Source
安徽大学第五届ACM/ICPC程序设计竞赛 网络赛
[align=center]————————————————————清明节分割线————————————————————[/align]
[align=center]思路:本题不难,只需用一个数组保存每个城市的父亲:距离首都的最后一个中间城市。下标代表每个城市。在更改首都时,只有这两个首都之间的中间城市的父亲会发生改变,其他城市不受影响。这相当于改变父亲(好恐怖)。模拟一下即可。[/align]
[align=center]代码如下:[/align]
Time Limit: 1000 ms Case Time Limit: 1000 ms Memory Limit: 64 MB
Description
long long ago,cxlove是某国国王,掌控着n个城市,而且为了交通便捷,在城市与城市之间建立了公路,并且保证任意两个城市之间有且仅有一条路。简而言之,整个交通网是一个树型结构(PS:cxlove在很多年前就用了最小的代价,构造生成树,形成连通网络了)
这n个城市都编了号,标号分别为1,2……,n
在cxlove年轻的时候,一直定居在r1打拼,那就是所谓的首都吧~~~~
直到年迈的时候,cxlove本着由城市向农村发展的原则,准备迁都至r2。
首都作为一个国家的枢纽,地位非同一般。
当首都确定时,cxlove便会命令下属以首都为中心调查清楚整个国家交通网的情况。并采用了以下交通网表示法:对于每一个城市i,ai表示从首都到城市i的路径上的最后一个城市(除了i)。
cxlove已经拥有了r1为首都时的交通资料,如今首都城市更改,cxlove想要节省人力物力而不去重新统计交通网,希望你能给出以r2为首都的交通资料。
例如:1->2->3,如果城市1为首都,那么从1->2的路径中,最后一个城市是1,从1->3的路径中,最后一个城市是2
Input
一个整数 T,表示有 T 组测试数据。(1<=T<=30)
每组数据输入格式如下:
三个整数n,r1,r2,分别表示n个城市,原先的首都,新的首都。(1<=n<=10000,1<=r1!=r2<=n)
接下来n个整数a1,a2……,an,表示首都为r1时的的交通网,其中对于r1自己而言,记录为-1。
Output
每组输出一行整数,按标号顺序表示首都为r2时的交通网
Sample Input
Original | Transformed |
2 3 2 3 2 -1 2 6 2 4 6 -1 1 2 4 2
Sample Output
Original | Transformed |
2 3 -1 6 4 1 -1 4 2
Source
安徽大学第五届ACM/ICPC程序设计竞赛 网络赛
[align=center]————————————————————清明节分割线————————————————————[/align]
[align=center]思路:本题不难,只需用一个数组保存每个城市的父亲:距离首都的最后一个中间城市。下标代表每个城市。在更改首都时,只有这两个首都之间的中间城市的父亲会发生改变,其他城市不受影响。这相当于改变父亲(好恐怖)。模拟一下即可。[/align]
[align=center]代码如下:[/align]
#include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> int fath[10005]; int main() { int cas, city, r1, r2; scanf("%d", &cas); while(cas--) { scanf("%d%d%d", &city, &r1, &r2); for(int i = 1; i <= city; i++) scanf("%d", fath+i); int v = r2, c = -1, u; for(;;) { if(fath[v] != -1) {//从新首都开始 u = fath[v];//暂存旧的父亲 fath[v] = c;//改为新的父亲 c = v;//该城市成为新的父亲 v = u;//旧的父亲成为下一个城市 } else { fath[v] = c;//走到了旧的首都,完成更改,结束模拟 break; } } for(int i = 1; i < city; i++) printf("%d ", fath[i]); printf("%d\n", fath[city]); } return 0; }
相关文章推荐
- AOJ-AHU-OJ-61 Lake Counting(递归)
- AOJ-AHU-OJ-558 窃取任务
- AOJ-AHU-OJ-596 下一个K-number
- AOJ-AHU-OJ-670 Tyrion的矩阵
- AOJ-AHU-OJ-675 定位赛
- AOJ-AHU-OJ-443 寄存器数据转换
- AOJ-AHU-OJ-675 定位赛
- AOJ-AHU-OJ-2 Homework
- AOJ-AHU-OJ-64 数字三角形
- AOJ-AHU-OJ-13(POJ-1056) IMMEDIATE DECODABILITY
- AOJ-AHU-OJ-31 Counting Sheep
- AOJ-AHU-OJ-3 Redraiment的遭遇
- AOJ-AHU-OJ-145 流水线作业调度问题
- AOJ-AHU-OJ-351 求最值之差
- AOJ-AHU-OJ-294 NBA Finals
- AOJ-AHU-OJ-497 最长起伏子序列
- AOJ-AHU-OJ-4 1、2、3、4、5...
- AOJ-AHU-OJ-542 Window
- AOJ-AHU-OJ-466 Monthly Expense
- AOJ-AHU-OJ-6 Hero in Maze