题目传送门

根据本蒟蒻细致粗略的分析

这明显是一道水题模(du)板(liu)题

可我竟然没有一遍AC;

为更好地食用本题解需要了解以下内容

1.dfs(大法师深搜)

2.bfs(冰法师广搜)/dij最短路

3.STL vector的使用

4.STL 队列的使用

其次就是一些优化(本人在此处卡了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;
}

最新文章

  1. Python标准模块--itertools
  2. RSA非对称性前端加密后端解密
  3. [mysql]throw exception
  4. c#如何读取相机手机的拍摄时间
  5. SPJS Upload for SharePoint: Custom upload page for uploading documents to various document libraries in a site collection
  6. HTML5 manifest离线缓存
  7. ZOJ3550 Big Keng(三分)
  8. 如何通过 jQuery text() 和 html()
  9. local storage 简单应用‘’记住密码’
  10. php发送http请求
  11. python之6-1常用函数
  12. impala集成sentry
  13. 2.cocos2dx 3.2中语法的不同之处,lambada表达式的使用和function和bind函数的使用
  14. 【数据结构】算法 LinkList (Remove Nth Node From End of List)
  15. keepalive高可用
  16. C# 字符串大写转小写,小写转大写,数字保留,其他除外
  17. ANR异常及traces信息解析
  18. .NetCore 实现分页控件(URL分页)实战
  19. Java多线程runnable
  20. C# 转义字符 &#39;\&#39;反斜杠

热门文章

  1. sscanf的应用
  2. oo——第三单元总结
  3. 向Vertex Shader传递vertex attribute
  4. 从effective C++中窥探C++11特性
  5. XAML常用控件2
  6. python类内部方法__setattr__ __getattr_ __delattr__ hasattr __getattribute__ __getitem__(),__setitem__(), __delitem__()
  7. python-dict和list常用方法
  8. C++知识点案例 笔记-5
  9. kubernetes 监控(14)
  10. Redis 快速集群环境搭建