图练习-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. Linux下定时备份MySQL数据库的Shell脚本

    Linux下定时备份MySQL数据库的Shell脚本   对任何一个已经上线的网站站点来说,数据备份都是必须的.无论版本更新还是服务器迁移,备份数据的重要性不言而喻.人工备份数据的方式不单耗费大量时间 ...

  2. 2017/11/13 Leetcode 日记

    2017/11/13 Leetcode 日记 463. Island Perimeter You are given a map in form of a two-dimensional intege ...

  3. bzoj4556: [Tjoi2016&Heoi2016]字符串 (后缀数组加主席树)

    题目是给出一个字符串,每次询问一个区间[a,b]中所有的子串和另一个区间[c,d]的lcp最大值,首先求出后缀数组,对于lcp的最大值肯定是rank[c]的前驱和后继,但是对于这个题会出现问题,就是题 ...

  4. 哈希表(散列表)—Hash表解决地址冲突 C语言实现

    哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.具体的介绍网上有很详 ...

  5. Makefile-有三个非常有用的变量。分别是$@,$^,$<代表的意义

    $@ 代表目标文件,$^ 代表所有的依赖文件,$< 代表第一个依赖文件. # 这是简化后的Makefilemain:main.o mytool1.o mytool2.o gcc -o $@ $^ ...

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

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

  7. Android 杀掉当前程序的进程

    在销毁所有活动的代码后面再加上杀掉当前进程的代码,以保证程序完全退出,杀掉进程的代码如下所示: android.os.Process.killProcess(android.os.Process.my ...

  8. 02-MariaDB主从安装SpringBoot整合MyBatis配置

    关于MariaDB的介绍 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为My ...

  9. 常用SQL Server规范集锦及优化

    原文地址:http://www.cnblogs.com/liyunhua/p/4526195.html

  10. Xcode常用插件推荐

    1.Xcode插件管理工具–Alcatraz的安装 Alcatraz是针对Xcode的一款插件管理器,通过Alcatraz可以非常方便的管理插件,包括安装.删除.升级等操作. 官方网站 安装方法一(推 ...