【广搜】Cyh和香穗子
Problem 3 Cyh和香穗子
话说,Cyh和香穗子是好朋友,一天他们在fzsz迷路了….Cyh在地点1,香穗子在地点n.由于Cyh是土生土长的fzsz人,所以Cyh准备去n地给香穗子带路.
fzsz是个奇怪的地方,它由n地点组成,并且任意两个地点A,B满足要么A能到B,要么B能到A,要么都不能互相到达,一定不存在A和B都能互相到达.
现在Cyh希望快点到达n地
输入:
第一行两个数n,m
接下来m行,每行两个数a,b,表示地点a能达到地点b
输出:
Cyh最少经过的地点数
Sample Input
4 5
1 2
2 3
2 4
1 3
3 4
Sample Output
3
数据范围:
n<=100000,m<=500000,保正有解
可以用spfa求最短路
这里写宽搜的代码,很标准的题目
C++ Code
/*
C++ Code
http://oijzh.cnblogs.com
*/
#include<cstdio>
#include<cstdlib>
#include<queue>
using namespace std;
#define MAXN 100010int n,m;
struct link{int y;link* next;};
link *head[MAXN];
bool h[MAXN];
struct record{int pos,step;};
queue<record>q;void insert(int x,int y)
{link *node=new link;node->y=y;node->next=head[x];head[x]=node;
}int main()
{freopen("3.in","r",stdin);freopen("3.out","w",stdout);scanf("%d%d",&n,&m);int i,x,y;for(i=1;i<=m;i++){scanf("%d%d",&x,&y);insert(x,y);}record temp,newtmp;link* node;temp.pos=1;temp.step=1;h[1]=true;q.push(temp);while(!q.empty()){temp=q.front();q.pop();node=head[temp.pos];while(node){y=node->y;if(!h[y]){newtmp.pos=y;newtmp.step=temp.step+1;if(y==n){printf("%d",newtmp.step);exit(0);}h[y]=true;q.push(newtmp);}node=node->next;}}return 0;
}
转载于:https://www.cnblogs.com/oijzh/archive/2012/10/14/2723361.html
【广搜】Cyh和香穗子相关推荐
- Cyh和香穗子(NDK1352)
Cyh和香穗子 Time Limit:10000MS Memory Limit:65536K Total Submit:14 Accepted:8 Description 话说,Cyh和香穗子是好朋 ...
- Go 分布式学习利器(15) -- Go 实现 深搜和广搜
强化语法,回顾算法. 通过Go语言实现 深度优先搜索 和 广度优先搜索,来查找社交网络中的三度好友关系(三度指的是一个节点到 其相邻节点 到 其相邻节点的节点 ,图递增三层好友关系). 涉及到的Go语 ...
- 搜索:广搜 词语阶梯
问题描述以及解决过程如下导图 广搜实现如下 #include <iostream> #include <algorithm> #include <vector> # ...
- [NC23486]小A与小B 双向广搜
题解:这个题属于走迷宫类型问题的一个升级版吧,不同之处在于一秒钟小A走一步,小B可以走两步,这两种事件是同时发生的,所以我们每秒钟让A扩散一步,让B扩散两步. 两个人走过的路径分别用 visited[ ...
- 【图论专题】BFS中的双向广搜 和 A-star
双向广搜 AcWing 190. 字串变换 #include <cstring> #include <iostream> #include <algorithm> ...
- [数据结构] 迷宫问题(栈和队列,深搜和广搜)
代码: #include <iostream> #include <string.h> #include <stack> #include <queue> ...
- UVA 122 Trees on the level 二叉树 广搜
题目链接: https://vjudge.net/problem/UVA-122 题目描述: 给你一种二叉树的构造方法, 让你逐层输出二叉树的节点值, 如果不能够则输出"not comple ...
- hrbust 1616 密码锁(广搜)
分析:广搜,每个四位数作为一个状态,从每个状态扩展出其他的几种状态并累加步数之后加入队列. 1 #include <stdio.h> 2 #include <string.h> ...
- [kuangbin] M - Find a way(简单广搜)
题目链接:https://vjudge.net/contest/215603#problem/M 其中三维数组dis将两个广搜合并到了一起 #include<iostream> #incl ...
最新文章
- android表视图,android – 列表视图与表格布局
- poj 3984 迷宫问题 BFS
- linux vi文本类常用命令
- 在nodejs中操作mongodb
- java drawstring字体大小,JAVA中,drawstring 方法的用法,格式是什么啊
- advanced installer更换程序id_好程序员web前端培训分享kbone高级-事件系统
- 2022 USNews全美大学排行榜出炉!普林斯顿霸榜,哥大哈佛MIT并列第二
- eclipse中启动tomcat的项目路径
- 日期处理string 与 DateTime相互转化
- 理解mini-batch、Momentum、RMSpror、Admin优化算法
- C++ 友元函数 友元类 friend class
- Spatial-Temporal时间序列预测建模方法汇总
- “大圆满”之前行--从概念到知识再到计算的共生【原力】_目录规划与提要
- linux中竖线'|',双竖线‘||’,和的意思
- android x86 uc,UC浏览器X86版下载|UC浏览器X86版老版 V10.8.5 安卓版 下载_当下软件园_软件下载...
- 『Photo Shop实用技巧』之 去除红眼
- 五个成人必看的故事!
- 我的世界java边境之地_我的世界边境之地是否存在 我的世界边境之地大揭秘
- [ 和你一起终身学习]---家长也是需要学习,需要成长的
- Network Slimming——有效的通道剪枝方法(Channel Pruning)