hiho 1624 最短游览路线 [Offer收割]编程练习赛35 Problem B
来源:互联网 发布:小猪o2o源码下载 编辑:程序博客网 时间:2024/05/23 11:38
题目2 : 最短游览路线
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
- 样例输入
5 7 1 2 5 1 2 4 2 3 3 2 3 4 4 5
- 样例输出
4
描述
十一期间小Hi被朋友拉去某座名山旅游。这座山上一共有N个景点,编号1~N,通过M条单向缆车相连。
小Hi和朋友的出发点在1号景点。小Hi正在等待某公司的面试电话,所以他希望找一条路线,搭乘最少次数的缆车(至少一次),回到出发点。
你能求出最少搭乘缆车的次数吗?
输入
第一行包含两个整数N和M。
以下M行,每行包含两个整数a和b,代表有一条从a到b的单向缆车。
对于30%的数据,1 ≤ N ≤ 10, 1 ≤ M ≤ 90
对于100%的数据,1 ≤ N ≤ 10000, 1 ≤ M ≤ 100000, 1 ≤ a, b ≤ N, a ≠ b
输出
回到出发点最少搭乘缆车的次数。如果无法通过缆车回到出发点输出-1。
#include <iostream>#include <stdio.h>#include <math.h>#include <stdlib.h>#include <string>#include <string.h>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <stack>#include <bits/stdc++.h>using namespace std;int N,M;vector<int>G[10009];bool used[100009];struct node{ int v,step; node(){} node(int V,int S){ v=V; step=S; }};int bfs(){ queue<node>q; if(G[1].size()==0)return -1; for(int i=0;i<G[1].size();i++){ q.push(node(G[1][i],1)); used[G[1][i]]==1; } while(!q.empty()){ node cur=q.front(); q.pop(); if(cur.v==1)return cur.step; for(int i=0;i<G[cur.v].size();i++){ if(!used[G[cur.v][i]]){ q.push(node(G[cur.v][i],cur.step+1)); used[G[cur.v][i]]=1; } } } return -1;}/*5 51 25 12 33 24 5*/int main(){ cin>>N>>M; for(int i=0;i<M;i++){ int a,b; scanf("%d%d",&a,&b); G[a].push_back(b); } cout<<bfs(); return 0;}//// _oo0oo_// o8888888o// 88" . "88// (| -_- |)// 0\ = /0// ___/`---'\___// .' \\| |// '.// / \\||| : |||// \// / _||||| -:- |||||- \// | | \\\ - /// | |// | \_| ''\---/'' |_/ |// \ .-\__ '-' ___/-. /// ___'. .' /--.--\ `. .'___// ."" '< `.___\_<|>_/___.' >' "".// | | : `- \`.;`\ _ /`;.`/ - ` : | |// \ \ `_. \_ __\ /__ _/ .-` / /// =====`-.____`.___ \_____/___.-`___.-'=====// `=---='////// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//// 佛祖保佑 永无BUG//////
阅读全文
1 0
- hiho 1624 最短游览路线 [Offer收割]编程练习赛35 Problem B
- hiho 1486 DP+状压 [Offer收割]编程练习赛11 problem B 物品价值
- hiho 1612 候选人追踪 [Offer收割]编程练习赛32 Problem B 乱搞
- hiho 1620 股票价格3 [Offer收割]编程练习赛34 Problem B 单调栈
- hiho 1642 三角形面积和 [Offer收割]编程练习赛37 Problem B
- hiho 1623 有歧义的号码 [Offer收割]编程练习赛35 Problem A
- hiho 1625 重复字符串匹配 [Offer收割]编程练习赛35 Problem C KMP模板题
- hiho 1626 缩写命名 [Offer收割]编程练习赛35 Problem D 二分图匹配
- hiho[Offer收割]编程练习赛1
- hiho 1638 小Hi的天平 [Offer收割]编程练习赛36 Problem B 并查集+图dfs乱搞
- hiho 1485 尺取法 [Offer收割]编程练习赛11 problem A hiho字符串
- hiho 1487 并查集+搜索 [Offer收割]编程练习赛11 problem C 岛屿3
- hiho 1599 dfs乱搞 [Offer收割]编程练习赛29 Problem A 逃离迷宫4
- hiho 1601 背包DP乱搞 [Offer收割]编程练习赛29 Problem C 最大得分
- hiho 1611 气泡图 [Offer收割]编程练习赛32 Problem A 数学公式暴力
- hiho 1613 墨水滴 [Offer收割]编程练习赛32 Problem C 优先队列+BFS
- hiho 1615 矩阵游戏II [Offer收割]编程练习赛33 Problem A 贪心暴力
- hiho 1617 方格取数 [Offer收割]编程练习赛33 Problem C DP
- java面试总结(一)- 多线程
- 002 如何修改远程仓库地址?
- 色彩与编码
- 最大公约数
- 【一起来学C语言】C语言的组成:循环结构
- hiho 1624 最短游览路线 [Offer收割]编程练习赛35 Problem B
- 二叉树基本操作及树形打印
- 网线中每根线的作用
- 常量定义
- 增强for循环
- 记录一些用过的
- Struts数据校验的两种方法,以及错误标签的格式化
- 求和函数
- 如何把自己的Jar包上传到 maven 官方仓库中,Maven上传图文讲解