图练习-BFS-从起点到目标点的最短步数

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描写叙述

在古老的魔兽传说中。有两个军团,一个叫天灾,一个叫近卫。在他们所在的地域,有n个隘口。编号为1..n,某些隘口之间是有通道连接的。当中近卫军团在1号隘口,天灾军团在n号隘口。某一天。天灾军团的领袖巫妖王决定派兵攻打近卫军团。天灾军团的部队如此庞大,甚至能够填江过河。可是巫妖王不想付出不必要的代价,他想知道在不修建不论什么通道的前提下,部队能否够通过隘口及其相关通道到达近卫军团展开攻击;假设能够的话,最少须要经过多少通道。因为n的值比較大(n<=100000),于是巫妖王找到了擅长编程的你 =_=。请你帮他解决问题,否则就把你吃掉变成他的魔法。为了解救自己。赶紧想办法吧。

输入

输入包括多组,每组格式例如以下。
第一行包括两个整数n(n <= 100000),m(m <= 200000)(分别代表n个隘口,这些隘口之间有m个通道)。

以下m行每行包括两个整数a,b;表示从a出发有一条通道到达b隘口(注意:通道是双向的)。

输出

假设天灾军团能够不修建不论什么通道就到达1号隘口,那么输出最少经过多少通道,否则输出NO。

演示样例输入

2 1
1 2
2 1
2 1

演示样例输出

1
1

提示

第一次用邻接表,无奈结构体数组模拟的没看懂,又不想敲链表,仅仅好用vector实现了,期间我发现了一个问题是。vector定义完要clear一下才干用!不然就是WA
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
typedef struct node
{
int point;
int step;
};
vector <int> p[100010];
bool vis[100010];
void bfs(int n)
{
queue <node> Q;
node t;
t.step=0;
t.point=n;
vis[n]=1;
Q.push(t);
while(!Q.empty())
{
node v=Q.front();Q.pop();
if(v.point==1)
{
printf("%d\n",v.step);
return ;
}
vector <int>::iterator it=p[v.point].begin();
while(it!=p[v.point].end())
{
if(!vis[*it])
{
vis[*it]=1;
t.point=*it;
t.step=v.step+1;
Q.push(t);
}
it++;
}
}
puts("NO");
}
int main()
{
int n,m,u,v;
while(~scanf("%d%d",&n,&m))
{
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)
p[i].clear();//非常重要
while(m--)
{
scanf("%d%d",&u,&v);
if(u!=v)
{
p[u].push_back(v);
p[v].push_back(u);
}
}
bfs(n);
}
return 0;
}


图结构练习——BFS——从起始点到目标点的最短步数(邻接表+BFS)的更多相关文章

  1. SDUT-2139_从起始点到目标点的最短步数(BFS)

    数据结构实验之图论五:从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 在古老的魔兽 ...

  2. SDUT OJ 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)

    数据结构实验之图论五:从起始点到目标点的最短步数(BFS) Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss P ...

  3. 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)

    分析:有向图里面找最短路径,原理就是每一步都走距离自己最近的路, 一旦发现走一步可以到,那么这个一定是最短的. #include <bits/stdc++.h> using namespa ...

  4. SDUT OJ 图练习-BFS-从起点到目标点的最短步数 (vector二维数组模拟邻接表+bfs , *【模板】 )

    图练习-BFS-从起点到目标点的最短步数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 在古老的魔兽传说中,有两个军团,一个叫天 ...

  5. 图的全部实现(邻接矩阵 邻接表 BFS DFS 最小生成树 最短路径等)

    1 /** 2 * C: Dijkstra算法获取最短路径(邻接矩阵) 3 * 6 */ 7 8 #include <stdio.h> 9 #include <stdlib.h> ...

  6. 数据结构学习笔记05图 (邻接矩阵 邻接表-->BFS DFS、最短路径)

    数据结构之图 图(Graph) 包含 一组顶点:通常用V (Vertex) 表示顶点集合 一组边:通常用E (Edge) 表示边的集合 边是顶点对:(v, w) ∈E ,其中v, w ∈ V 有向边& ...

  7. ACM/ICPC 之 数据结构-邻接表+BFS(TSH OJ-无线广播Broadcast)

    这道题中若能够构成互不干扰的区域,其构成的图其实就是汉密尔顿路(Hamilton road),因此如果能够观察出来可以直接转化为汉密尔顿路的存在性证明,即便不能观察,我相信ACMer也能转化为BFS问 ...

  8. 多源D点(邻接表+bfs)

    [问题]给出一颗n个结点的树,树上每条边的边权都是1,这n个结点中有m个特殊点,请你求出树上距离这m个特殊点距离均不超过d的点的数量,包含特殊点本身. 输入: 输入第一行包含三个正整数,n.m.d分别 ...

  9. 图练习-BFS-从起点到目标点的最短步数(sdut 2830)邻接边表

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2830 题目描述 在古老的魔兽传说中,有两个军团 ...

随机推荐

  1. BZOJ3262陌上花开(三维偏序问题(CDQ分治+树状数组))+CDQ分治基本思想

    emmmm我能怎么说呢 CDQ分治显然我没法写一篇完整的优秀的博客,因为我自己还不是很明白... 因为这玩意的思想实在是太短了: fateice如是说道: 如果说对于一道题目的离线操作,假设有n个操作 ...

  2. Trie树入门

    Trie树入门 貌似很多人会认为\(Trie\)是字符串类型,但是这是数据结构!!!. 详情见度娘 下面开始进入正题. PS:本文章所有代码未经编译,有错误还请大家指出. 引入 先来看一个问题 ​ 给 ...

  3. HDU 6071 Lazy Running (同余最短路 dij)

    Lazy Running Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)To ...

  4. Redis学习篇(三)之Key相关操作

    KEYS 作用:返回所有的给定模式的key 语法:KEYS pattern 通配符: *: 任意个字符 ?: 任意一个字符 []: 匹配[]之间的字符 [a-z] [A-Z] \x: 匹配特殊字符 ? ...

  5. 【BZOJ 4527】 4527: K-D-Sequence (线段树)

    4527: K-D-Sequence Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 145  Solved: 59 Description 我们称一个 ...

  6. Codeforces 1129 D. Isolation

    Codeforces 1129 D. Isolation 解题思路: 令 \(f(l,r)\) 为 \([l,r]\) 中之出现一次的元素个数,然后可以得到暴力 \(\text{dp}\) 的式子. ...

  7. UVA11468 Substring --- AC自动机 + 概率DP

    UVA11468 Substring 题目描述: 给定一些子串T1...Tn 每次随机选择一个字符(概率会给出) 构造一个长为n的串S,求T1...Tn不是S的子串的概率 直接把T1...Tn建成AC ...

  8. p1315构建双塔 dp

    From easthong ☆构建双塔                 描述 Description     2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了 ...

  9. Android开发AlertDialog解析

    打开源码,首先映入眼帘的是三个构造方法,但这三个构造方法都是protected类型的, 可见,不允许我们直接实例化AlertDialog. 因此,我们再看别的有没有方法.可以实例化 再仔细一看,发现一 ...

  10. bzoj 1009: [HNOI2008]GT考试 -- KMP+矩阵

    1009: [HNOI2008]GT考试 Time Limit: 1 Sec  Memory Limit: 162 MB Description 阿申准备报名参加GT考试,准考证号为N位数X1X2.. ...