题解 P5318 【【深基18.例3】查找文献】
根据本蒟蒻细致粗略的分析
这明显是一道水题模(du)板(liu)题
可我竟然没有一遍AC;
为更好地食用本题解需要了解以下内容
1.dfs(大法师深搜)
2.bfs(冰法师广搜)/dij最短路
其次就是一些优化(本人在此处卡了while(1)n++次)
下面附上代码
#include<bits/stdc++.h>//万能文件头
using namespace std;
inline int read()//二进制优化的快读
{
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
int n,m;
bool b[100005];//定义b数组防止重复输出
vector<int > a[100005];//STL大法好
void dfs(int x,int r)//x表示所在点,r表示剩余未遍历的点
{
b[x]=true;//记录某点已经输出过
if(!r)//如果每个点都遍历过终止递归
{
cout<<x<<' ';
return ;
}
cout<<x<<' ';//输出
for(int i=0;i<a[x].size();i++)
if(!b[a[x][i]]) dfs(a[x][i],r-1);//查找从x可以到的点,并遍历
}
void bfs()
{
queue<int> q;//还是STL
q.push(1);b[1]=true;//把1点放入队列中,并标记1点已经遍历过
while(!q.empty())
{
int s=q.front(); q.pop();//拿出队列首的那个点
cout<<s<<' ';//输出
for(int i=0;i<a[s].size();i++) if(b[a[s][i]]==false) q.push(a[s][i]),b[a[s][i]]=true;//把点s所能到达的点遍历,为防止TLE和重复输出,记录已遍历过的点
}
}
int main()
{
n=read();//读入
m=read();
for(int i=1;i<=m;i++)
{
int x,y;
x=read();//读入
y=read();
a[x].push_back(y);//建图 表示x可以到y
}
for(int i=1;i<=n;i++)//把每条路所通向的点从小到大排列(题目中有要求)
sort(a[i].begin(),a[i].end());//快排
dfs(1,n);//进行深搜 从1点开始,进行n次
cout<<endl;//换行
for(int i=1;i<=n;i++) b[i]=false;//初始化
bfs();//进行广搜
return 0;
}
题解 P5318 【【深基18.例3】查找文献】的更多相关文章
- P4715 【深基16.例1】淘汰赛
P4715 [深基16.例1]淘汰赛 题目描述 有 2^n(n≤7) 个国家参加世界杯决赛圈且进入淘汰赛环节.我经知道各个国家的能力值,且都不相等.能力值高的国家和能力值低的国家踢比赛时高者获胜.1 ...
- 洛谷 P5706 【深基2.例8】再分肥宅水
题目连接: P5706 [深基2.例8]再分肥宅水 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 我提交的: 1 #include<iostream> 2 #inclu ...
- P2240 【深基12.例1】部分背包问题
P2240 [深基12.例1]部分背包问题 题目描述 阿里巴巴走进了装满宝藏的藏宝洞.藏宝洞里面有 N(N \le 100)N(N≤100) 堆金币,第 ii 堆金币的总重量和总价值分别是 m_i,v ...
- 【vector+pair】洛谷 P4715 【深基16.例1】淘汰赛
题目:P4715 [深基16.例1]淘汰赛 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题因为数据范围不大,所以做法可以非常简单,使用一个vector加上pair就可以了: ...
- 题解 P5718 【【深基4.例2】找最小值】
题目传送门 思路 介绍一种新方法--sort排序,它的格式是这样的sort(a+1,a+n+1,cmp);,我们只需要把a数组排好序,然后输出第\(1\)个元素即可. 定义a数组与变量\(n\)并输入 ...
- 题解 P5712 【【深基3.例4】Apples】
题目传送门 思路 仔细读题后,我们可以发现,输出可以分成\(2\)种情况,apple加s与apple不加s,所以我们可以使用if/else来实现. 接着,我们读入n. int n; cin>&g ...
- 题解 P5733 【【深基6.例1】自动修正】
题目传送门 分析: 1.这道题可以说是一个字符串的练习好题.我们先来了解一下字符串.在这道题中,建议使用\(string\) \(string\)是\(C++\).\(java\).\(VB\)等编程 ...
- 【题解】【数组】【查找】【Leetcode】Search in Rotated Sorted Array
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...
- 查找文献的BibTex
BibTex可以通过Google Scholar来查找. 注意,默认情况下,Google scholar 关闭了显示BibTex链接. 打开Google Scholar 选择右上角菜单按钮 选择set ...
随机推荐
- .NET平台系列5 .NET Core 简介
系列目录 [已更新最新开发文章,点击查看详细] 自1995年互联网战略日以来最雄心勃勃的事业 -- 微软.NET战略, 2000年6月30日. 微软公司于2002年2月13日正式推出第一代.N ...
- RTTI之dynamic_cast运算符
#include <iostream> #include <cstdlib> #include <ctime> using std::cout; class Gra ...
- SQLFlow——一个强大的可视化SQL关系分析工具
SQLFlow 摘要 本文主要介绍SQLFlow是什么,以及它的功能及使用场景 SQLFlow是什么 SQLFlow是一个可视化的在线处理SQL对象依赖关系的工具,只需要上传你的SQL脚本,它可以自动 ...
- MSSQL·查询T-SQL语句执行时间的三种方法
阅文时长 | 0.23分钟 字数统计 | 420.8字符 主要内容 | 1.引言&背景 2.自定义时间变量求差法 3.MSSQL内置方法 4.MSSQL选项开启时间统计 5.声明与参考资料 『 ...
- [DB] Flink 读 MySQL
思路 在 Flink 中创建一张表有两种方法: 从一个文件中导入表结构(Structure)(常用于批计算)(静态) 从 DataStream 或者 DataSet 转换成 Table (动态) pa ...
- [项目] 淘淘商城 Part.1
电商 市场 2013:79万笔/分钟 2014:13.4万亿,双11支付宝交易峰值285万笔/分钟 2015:50万亿 技术特点 一个Tomcat:500并发 分布式:上万并发 高并发.集群.负载均衡 ...
- shell中 -eq,-ne,-gt,-lt,-ge,-le数字比较符
使用说明: -eq //equals等于 -ne //no equals不等于 -gt //greater than 大于 -lt //less than小于 -ge ...
- 更新索引库: $locate string 寻找包含有string的路径: $updatedb
更新索引库: $locate string 寻找包含有string的路径: $updatedb 与find不同,locate并不是实时查找.你需要更新数据库,以获得最新的文件索引信息.
- Git-【技术干货】工作中Git的使用实践
Git-[技术干货]工作中Git的使用实践 置顶 2019-09-17 21:02:16 web洋仔 阅读数 11444更多 分类专栏: Git 版权声明:本文为博主原创文章,遵循CC 4.0 B ...
- 源码安装Apache(httpd)
[RHEL8] !!!测试环境我们首关闭防火墙和selinux [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# sys ...