【2014】
时间:2019-11-15
本文章向大家介绍【2014】,主要包括【2014】使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
D2T2 寻找道路
一道相较于代码能力更考验思维的题。
首先我们要意识到只跟终点有关的特殊性质,跑反向图是很常见的操作。
因此这道题我们就是先从终点跑一遍反向图,把能到达终点的点标记出来,因为最后路径上的点绝对是从这些点中选,注意特判如果起点跑不到终点就直接输出-1然后return 0。
接下来枚举这些能到达终点的点,先将它们都标记为路径上的点,再枚举它们的每一条边的终点,这些(当前枚举点对应的)终点有一个不能到达题目所给的终点,那么把已标记点去掉标记,表明它不能出现在路径上。
最后bfs跑一个最短路,只能跑被标记的点即可。
#include<bits/stdc++.h> #define ri register int #define ll long long #define For(i,l,r) for(ri i=l;i<=r;i++) #define Dfor(i,r,l) for(ri i=r;i>=l;i--) using namespace std; const int M=1e5+5; int dis[M],n,m,a,b,s,t; bool path[M],can[M]; vector<int>side[M]; vector<int>edis[M]; queue<int>q; inline ll read(){ ll f=1,sum=0; char ch=getchar(); while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();} while(isdigit(ch)){sum=(sum<<1)+(sum<<3)+(ch^48);ch=getchar();} return f*sum; } int main(){ n=read(),m=read(); For(i,1,m){ a=read(),b=read(); side[a].push_back(b); edis[b].push_back(a); } s=read(),t=read(); can[t]=1;q.push(t); while(!q.empty()){ int u=q.front();q.pop(); for(int i=edis[u].size()-1;i>=0;i--){ int v=edis[u][i]; if(!can[v]){ can[v]=1; q.push(v); } } } if(!can[s]){printf("-1\n");return 0;} For(i,1,n){ if(can[i]){ path[i]=1; for(int j=side[i].size()-1;j>=0;j--){ int v=side[i][j]; if(!can[v]){ path[i]=0; break; } } } } if(!path[s]){printf("-1\n");return 0;} dis[s]=1;q.push(s); while(!q.empty()){ int u=q.front();q.pop(); if(u==t){printf("%d\n",dis[t]-1);return 0;} for(int i=side[u].size()-1;i>=0;i--){ int v=side[u][i]; if(path[v]&&!dis[v]){ dis[v]=dis[u]+1; q.push(v); } } } printf("-1\n"); return 0; }
原文地址:https://www.cnblogs.com/jian-song/p/11867767.html
- Wordpress <= 4.6.1 使用语言文件任意代码执行 漏洞分析
- 如何使用hadoop命令向CDH集群提交MapReduce作业
- Wordpress <= 4.6.1 使用主题文件触发存储型XSS 漏洞分析
- 如何跨平台在本地开发环境提交MapReduce作业到CDH集群
- 区块链行业的机会
- KEGG数据库的rest API(附带R语言小技巧)
- 如何使用Java代码访问HDFS.docx
- Django CSRF Bypass (CVE-2016-7401) 漏洞分析
- 如何使用Cloudera Manager禁用YARN的HA
- Web Worker 中的 importScripts 和 baseHref 同源策略绕过问题
- 如何使用Java代码访问CDH的Solr服务
- Safari UXSS漏洞分析(CVE-2016-4758)
- Sqoop抽取Hive Parquet表数据到MySQL异常分析
- Hue中使用Oozie创建Ssh工作流时sudo命令执行失败问题分析
- 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 数组属性和方法
- linux服务器安装PHP扩展zip,zlib方法
- Lamp环境下设置绑定apache域名的方法分析
- Linux杀不死的进程之CPU使用率700%解决方法
- 解读Linux下ip命令展示的网络连接信息
- Apache ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现
- Linux环境使用g++编译C++方法总结
- linux命令实现音频格式转换和拼接的方法
- Apache 解决80端口占用问题
- Centos7搭建主从DNS服务器的教程
- ubuntu 下JDK环境变量配置方法
- Linux部署msmtp+mutt发送邮件功能
- linux使用QQ实现网络邮件报警功能
- Linux初学(CnetOS7 Linux)之切换命令模式和图形模式的方法
- linux expect 自动登录交换机保存配置的方法
- CentOS7安装mysql5.7解压缩版简明教程