【题目描述】
某山区有高高低低的 n 个山峰,根据海拔高度的不同,这些山峰由低到高进行了 1 到 n 编号。有 m 条只能单向通行的羊肠小道连接这些山峰。现在,这里要举行一场跳伞登山赛,选手们伞降到某山峰后,再通过山间小道向属于自己的最高峰进军。
小明也参加了这次比赛,你能否告诉他,从任意一座山峰出发所能到达的最高峰编号是多少?
【输入数据】
输入共 m+1 行。
第 1 行为 2 个整数 n、m,用一个空格隔开,表示山峰总数和道路总数。
接下来 m 行,每行 2 个整数,用一个空格隔开,表示一条道路的起点和终点山峰编号。
【输出数据】
输出共 1 行,n 个整数,用一个空格隔开,表示每座山峰所能到达的最高峰的编号。
【样例输入】
4 3
1 2
2 4
4 3
【样例输出】
4 4 3 4
【数据范围】
60%的数据满足:1≤m,n≤10^3;
100%的数据满足:1≤m,n≤10^5。
【解题思路】
按照输入的数据反向建图,从最大往回走,给连通的每一个点作标志。
原理就是从大到小走,第一个走到的绝对是最优解,省去了大量的时间。
【参考程序】

#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
vector<int> edge[100005];
bool visit[100005];
int f[100005],n,m,s,e;
void dfs(int val,int sta)
{
visit[sta]=true;
for (int i=0;i<edge[sta].size();i++)
if (!visit[edge[sta][i]])
{
f[edge[sta][i]]=val;//做标记
dfs(val,edge[sta][i]);//继续走
}
}
int main()
{
//freopen("race.in","r",stdin);
//freopen("race.out","w",stdout);
scanf("%d%d",&n,&m);
for (int i=1;i<=m;i++)
{
scanf("%d%d",&s,&e);
edge[e].push_back(s);
}
for (int i=1;i<=n;i++)
f[i]=i;
for (int i=n;i>=1;i--)
{
if (visit[i]) continue;
dfs(f[i],i);
}
for (int i=1;i<=n;i++) printf("%d ",f[i]);
return 0;
}

【NHOI2018】跳伞登山赛的更多相关文章

  1. cocos creator 3D | 蚂蚁庄园运动会星星球

    上一篇文章写了一个简易版的蚂蚁庄园登山赛,有小伙伴留言说想要看星星球的,那么就写起来吧! 效果预览 配置环境 cocos creator 3d 1.0.0 小球点击 3d里节点无法用 cc.Node. ...

  2. SCNU ACM 2016新生赛决赛 解题报告

    新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...

  3. SCNU ACM 2016新生赛初赛 解题报告

    新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...

  4. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  5. SCNU 2015ACM新生赛决赛【F. Oyk闯机关】解题报告

            题目大意:一个$N$$\times$$N$的阵列,每个格子有$X_{ij}$个调和之音,若每次只能选择走右边或下边,从左上角出发走到右下角,问最多能收集到多少个调和之音?       ...

  6. SCNU 2015ACM新生赛初赛【1007. ZLM的扑克牌】解题报告

            题目链接详见SCNU 2015新生网络赛 1007. ZLM的扑克牌 .         其实我在想这题的时候,还想过要不要设置求最小的排列,并且对于回文数字的话,可以把扑克牌折起来( ...

  7. SCNU 2015ACM新生赛初赛【1006. 3D打印】解题报告

            题目链接详见SCNU 2015新生网络赛 1006. 3D打印 .出题思路来自codevs 3288. 积木大赛,属于模拟题.         首先我们把“选择从第L部分到第R部分”理 ...

  8. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  9. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

随机推荐

  1. javascript单线程,异步与执行机制

    js的单线程模型与游览器的进程/线程息息相关,在了解js单线程与异步的时候,建议先看看这篇文章 为什么是单线程 由于js是可操作dom的,如果js是多线程,在多线程的交互下,处于界面中的dom节点就可 ...

  2. MySQL开发篇(4)表类型(存储引擎)的选择

    一.查看支持的存储引擎以及设置修改存储引擎 1.查看默认存储引擎:show variables like '%storage_engine%'; 2.查看当前数据库支持的存储引擎:show ENGIN ...

  3. js图片随机切换

    使用js做到随机切换图片 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  4. 2018.8.14 python中的内置函数(68个)

    主要内容: python中68个内置函数的功能及使用方法

  5. TensorFlow Object Detection API中的Faster R-CNN /SSD模型参数调整

    关于TensorFlow Object Detection API配置,可以参考之前的文章https://becominghuman.ai/tensorflow-object-detection-ap ...

  6. VB.NET 与 SAP RFC连接问题点

    与SAP RFC连接,电脑上必须要安装SAP软件,否则会报错ActiveX 输入工单号,无法带出SAP内接口RFC信息. 确认原因为:RFC接口需求的工单参数需要在前面加两位00,例如:1000541 ...

  7. C Primer Plus (一)

    摘要:重读C Primer Plus ,查漏补缺 重读C Primer Plus,记录遗漏的.未掌握的.不清楚的知识点. 一.概览 1.链接器的作用是将这3个目标元素(目标代码.系统的标准启动代码和库 ...

  8. [Hadoop]Hive-1.2.x安装配置+Mysql安装

    HIve的元数据存储在mysql中,需要配置与MySQL建立连接,除了安装MySQL外还要安装连接的jar包:mysql-connector-java-5.1.47.tar.gz   安装环境:Cen ...

  9. 一些 bypass WAF 技巧

    也是之前讲课写的,现在搬运过来 --- WAF所处的位置 * 云WAF * 硬件WAF * 软件WAF * 代码级WAF   WAF的绕过 1 架构层    1 对于云WAF,寻找真实ip       ...

  10. [考试反思]1017csp-s模拟测试77(lrd day1) :反抗

    说在前面:强烈谴责AK神Mr_zkt没有丝毫素质RP-- 然而我也想没素质一次,但是我没机会AK一套除了B组题以外的题... 太菜了,没权力.人家AK了人家就是牛逼你没话说 达哥的题必须好好写反思. ...