廣度優先搜索練習之神奇的電梯

廣度優先搜索練習之神奇的電梯
Time Limit: 1000ms Memory limit: 65536K
題目描述
有一座已知層數為n的高樓,這座高樓的特殊之處在于只能靠電梯去上下樓,所以要去到某一層要非常耽誤時間,然而更悲哀的是,這座高樓的電梯是限號的,小鑫最開始的時候在1層,他想去第x層,問題是他最起碼要經過多少層(包含第x層)才能到達第x層。
輸入
多組輸入。
第一行是三個正整數n,m,q。分別代表樓的總層數,給定的m條信息和q次查詢。
接下來的m行,每行的第一個整數pos代表這是第pos層的電梯,第二個數代表從這一層可以去的樓層總共有num個,之后的num個數字代表從第pos層代表可以去的樓層。
最后的q行,每行一個整數代表小鑫想去的樓層號碼。
1<=m,pos,num<=n<=200
1<=q<=20
輸出
對于每次詢問輸出一個整數,占一行。代表如果要去某個樓層最少要經過多少層,如果到不了的話就輸出-1。
示例輸入

10 4 3
1 2 6 7
3 4 4 6 8 10
5 2 2 3
7 3 10 5 6
4
5
9

示例輸出

5
3
-1

題目方法:bfs+鄰接矩陣,隊列的基本操作
前提準備:

#include<queue>

詳細用法:
定義一個queue的變量 queue M
查看是否為空范例 M.empty() 是的話返回1,不是返回0;
從已有元素后面增加元素 M.push()
輸出現有元素的個數 M.size()
顯示第一個元素 M.front()
顯示最后一個元素 M.back()
清除第一個元素 M.pop()

#include <iostream>
#include <cstring>
#include <stdio.h>
#include <queue>
using namespace std;
int k,key,h;
int map1[2000][2000];
int vir[2000];
struct node
{int x;int y;int time;
};
void bfs(int x)
{node t,f;queue<node> Q;t.x=x;t.time=0;Q.push(t);vir[x]=1;while(!Q.empty()){t=Q.front();Q.pop();if(t.x==key){printf("%d\n",t.time+1);return;}for(int i=1;i<=k;i++){f.x=i;if(vir[f.x]==0&&map1[t.x][f.x]){f.time = t.time+1;vir[f.x]=1;Q.push(f);}}}printf("-1\n");return ;
}
int main()
{int a,i,m,b;while(~scanf("%d%d%d",&k,&m,&h)){memset(map1,0,sizeof(map1));for(i=0;i<m;i++){scanf("%d%d",&a,&b);for(int j=0;j<b;j++){int h1;scanf("%d",&h1);map1[a][h1]=1;}}for(i=1;i<=10;i++){for(int j=1;j<=10;j++){printf("%d",map1[i][j]);}printf("\n");}for(i=0;i<h;i++){memset(vir,0,sizeof(vir));scanf("%d",&key);bfs(1);}}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536172.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536172.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536172.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ubuntu安裝proxychains及自動補全

proxychains ProxyChains是本人目前為止用到的最方便的代理工具。 inux下代理一般是通過http_proxy和https_proxy這兩個環境變量&#xff0c;但是很多軟件并不使用這兩個變量&#xff0c;導致流量無法走代理。在不使用vpn的前提下&#xff0c;linux并沒有轉發所有流量的真全局…

快速冪講解

快速冪的目的就是做到快速求冪&#xff0c;假設我們要求a^b,按照樸素算法就是把a連乘b次&#xff0c;這樣一來時間復雜度是O(b)也即是O(n)級別&#xff0c;快速冪能做到O(logn)&#xff0c;快了好多好多。它的原理如下&#xff1a; 假設我們要求a^b&#xff0c;那么其實b是可以…

如何查詢資料

如何查詢資料技術資料及問題查詢查詢方法分類查找提取關鍵字GitHub項目優先使用Google搜索引擎Copy Paste論文查找詢問主管 測試修改使用總結分享 公司信息查詢國內公司國外公司 如何查詢資料 技術資料及問題查詢 查詢方法 資料與解決辦法的查詢大致分為7大類。 1.分類查…

山東省第八屆 ACM 省賽 sum of power(SDUT 3899)

Problem Description Calculate ∑ni1im mod (10000000007) for given n&#xff0c;m. Input Input contains two integers n,m(1≤n≤1000,0≤m≤10). Output Output the answer in a single line. Example Input 10 0 Example Output 10 方法&#xff1a;快速冪和大數求和 …

Ubuntu主題更換

Ubuntu主題更換 目前的Ubuntu有Unity和Gnome兩個比較流行的版本&#xff0c;以下為Gnome桌面環境的主題更換&#xff0c;其他桌面環境類似。 主題的下載地址&#xff0c;點擊 Theme 將在網絡上下載的主題文件進行解壓&#xff0c;然后拷貝到 /usr/share/themes/ 目錄下&…

awk簡單使用

awk 用于在linux/unix下對文本和數據進行處理,支持用戶自定義函數和動態正則表達式等先進功能。 命令格式&#xff1a; awk BEGIN{ print “start” } pattern { commend } END{print "end"} file awk "BEGIN{ print “start” } pattern { commend } END{pr…

Ubuntu 14.04 下 Virtual Judge 的搭建

前期準備工作 1.1 一個Linux系統 因為現場賽的緣故&#xff0c;我一直使用的都是ubuntu。 這里我測試用的是Ubuntu14.04 Desktop 64bit ,當然選擇Server會更好一些. 系統的安裝不再贅述&#xff0c;作為服務器請選用Server版本。1.2 更新源 在搭建環境之前&#xff0c;請確保…

BitMap的原理介紹與實現

BitMap 位圖&#xff08;bitmap&#xff09;是一種非常常用的結構&#xff0c;在索引&#xff0c;數據壓縮等方面有廣泛應用。位圖是通過將數組下標與應用中的一些值關聯映射&#xff0c;數組中該下標所指定的位置上的元素可以用來標識應用中值的情況&#xff08;是否存在或者數…

MySQL與PHP連接

1、mysql_connect()-建立數據庫連接 格式&#xff1a; resource mysql_connect([string hostname [:port] [:/path/to/socket] [, string username] [, string password]]) 例&#xff1a; $conn mysql_connect("localhost", "username", "pa…

QML Profiler性能優化教程

QML Profiler 2018年1月26日 vincent 對于一個程序的開發&#xff0c;性能優化是開發中的一個重要步驟。 我們肯定不希望開發出來的程序表現出卡頓&#xff0c;最好是處處流暢&#xff0c;絲滑般的體驗。 對于C程序&#xff0c;我們有很多方法可以做性能優化&#xff0c;例如…

uburntu在不能自動獲取網絡時的聯網設置

一&#xff1a;網絡基礎配置 1. eth0設置不正確&#xff0c;導致無法正常啟動&#xff0c;修改eth0配置文件就好 ubuntu 12.04的網絡設置文件是/etc/network/interfaces&#xff0c;打開文件&#xff0c;會看到 auto lo iface lo inet loopback 這邊的設置是本地回路。在后…

計算機顯卡知識普及

顯卡知識普及 一、什么是顯卡&#xff1f; 顯示接口卡&#xff08;Video card&#xff0c;Graphics card&#xff09;、顯示器配置卡簡稱為顯卡&#xff0c;是個人電腦基本組成部分之一。 用途是將計算機系統所需要的顯示信息進行轉換驅動&#xff0c;并向顯示器提供信號&…

整除的尾數

Problem Description 一個整數&#xff0c;只知道前幾位&#xff0c;不知道末二位&#xff0c;被另一個整數除盡了&#xff0c;那么該數的末二位該是什么呢&#xff1f; Input 輸入數據有若干組&#xff0c;每組數據包含二個整數a&#xff0c;b(0<10000,10<b<100)&…

QML 控件大全

QML TypeContainerDelayButtonDialDialogButtonBoxDialogDrawerMenuMenuBarOverlayPageIndicatorRangeSliderScrollViewSpinBoxStackViewSwipeViewSwitchTabBarToolBarToolSeparatorToolTipTumbler QML Type 本篇主要介紹QtQuick Controls 2,Qt Creator 5.10 1.Container im…

斐波那契的整除

Description 已知斐波那契數列有如下遞歸定義&#xff0c;f(1)1,f(2)1, 且n>3,f(n)f(n-1)f(n-2)&#xff0c;它的前幾項可以表示為1&#xff0c; 1&#xff0c;2 &#xff0c;3 &#xff0c;5 &#xff0c;8&#xff0c;13&#xff0c;21&#xff0c;34…&#xff0c;現在的…

Qt與QML的枚舉綁定(C++枚舉)

Qt到QML的枚舉綁定 QML中是不支持c的枚舉類型的&#xff0c;所以我們可以使用Qt的元對象系統&#xff0c;即MOS,來幫助我們實現。 進行綁定的好處就是&#xff0c;以后數據發生變化的時候&#xff0c;就是枚舉發生增加修改&#xff0c;添加等的時候&#xff0c;不需要在QML中…

深入理解Qt的.pro文件

深入理解Qt的pro文件模板變量生成目錄生成的應用程序名編譯選項目標文件目錄包含頭文件包含源文件包含資源文件附加頭文件包含鏈接庫預編譯宏平臺相關性處理指定來自ui文件位置指定界面翻譯文本列表指定圖標 深入理解Qt的.pro文件 一般Qt項目我們是使用Qt Creator自動生成的&…

Ubuntu 用vsftpd 配置FTP服務器

最近開學&#xff0c;有好多課程結束后都需要將文件考到優盤里&#xff0c;而本人又有健忘的毛病&#xff0c;經常忘記帶優盤&#xff0c;所以就搭建了自己的ftp服務器&#xff0c;也算是用技術放松自己吧。閑話少敘&#xff0c;進入正題&#xff1a; 網上關于ftp搭建的文章很…

linux的程序打包deb

deb安裝包 deb是Unix系統(其實主要是Linux)下的安裝包&#xff0c;基于 tar 包&#xff0c;因此本身會記錄文件的權限(讀/寫/可執行)以及所有者/用戶組。 由于 Unix 類系統對權限、所有者、組的嚴格要求&#xff0c;而 deb 格式安裝包又經常會涉及到系統比較底層的操作&#…

利用pyinstaller打包python3程序

pyInstaller是一款用于將pyhon程序打包成exe文件的工具&#xff0c;pyInstaller不是一個python的包&#xff0c; 只需要把pyInstaller的文件下載下來放到任意為止都可以&#xff0c;也就是說pyInstaller相當于獨立出來專門干打包python的工具&#xff0c;這貨是工具不是庫&…