P1332 血色先鋒隊

来源:http://www.cnblogs.com/zwfymqz/archive/2017/06/23/7071275.html
-Advertisement-
Play Games

題目描述 巫妖王的天災軍團終於卷土重來,血色十字軍組織了一支先鋒軍前往諾森德大陸對抗天災軍團,以及一切沾有亡靈氣息的生物。孤立於聯盟和部落的血色先鋒軍很快就遭到了天災軍團的重重包圍,現在他們將主力只好聚集了起來,以抵抗天災軍團的圍剿。可怕的是,他們之中有人感染上了亡靈瘟疫,如果不設法阻止瘟疫的擴散, ...


題目描述

巫妖王的天災軍團終於卷土重來,血色十字軍組織了一支先鋒軍前往諾森德大陸對抗天災軍團,以及一切沾有亡靈氣息的生物。孤立於聯盟和部落的血色先鋒軍很快就遭到了天災軍團的重重包圍,現在他們將主力只好聚集了起來,以抵抗天災軍團的圍剿。可怕的是,他們之中有人感染上了亡靈瘟疫,如果不設法阻止瘟疫的擴散,很快就會遭到滅頂之災。大領主阿比迪斯已經開始調查瘟疫的源頭。原來是血色先鋒軍的內部出現了叛徒,這個叛徒已經投靠了天災軍團,想要將整個血色先鋒軍全部轉化為天災軍團!無需驚訝,你就是那個叛徒。在你的行蹤敗露之前,要儘快完成巫妖王交給你的任務。

軍團是一個N行M列的矩陣,每個單元是一個血色先鋒軍的成員。感染瘟疫的人,每過一個小時,就會向四周擴散瘟疫,直到所有人全部感染上瘟疫。你已經掌握了感染源的位置,任務是算出血色先鋒軍的領主們感染瘟疫的時間,並且將它報告給巫妖王,以便對血色先鋒軍進行一輪有針對性的圍剿。

輸入輸出格式

輸入格式:

第1行:四個整數N,M,A,B,表示軍團矩陣有N行M列。有A個感染源,B為血色敢死隊中領主的數量。

接下來A行:每行有兩個整數x,y,表示感染源在第x行第y列。

接下來B行:每行有兩個整數x,y,表示領主的位置在第x行第y列。

【數據規模】

1<=M,N<=500

1<=A,B<=M*N

輸出格式:

第1至B行:每行一個整數,表示這個領主感染瘟疫的時間,輸出順序與輸入順序一致。如果某個人的位置在感染源,那麼他感染瘟疫的時間為0。

輸入輸出樣例

輸入樣例#1:
5 4 2 3
1 1
5 4
3 3
5 3
2 4
輸出樣例#1:
3
1
3

說明

如下圖,標記出了所有人感染瘟疫的時間以及感染源和領主的位置。

 

這個題的數據有毒啊。。

怎麼搜都超時啊。。

看了一下題解,發現這個題解非常凝練

首先優化了vis數組

然後優化了儲存領袖的數組、、

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<queue>
 6 using namespace std;
 7 const int MAXN=1001;
 8 void read(int & n)
 9 {
10     char c='+';int x=0;bool flag=0;
11     while(c<'0'||c>'9')
12     {
13         c=getchar();
14         if(c=='-')flag=1;    
15     }
16     while(c>='0'&&c<='9')
17         x=x*10+c-48,c=getchar();
18     flag==1?n=-x:n=x;
19 
20 }
21 int n,m,gr,pep,x,y;
22 int out[MAXN*100];
23 int map[MAXN][MAXN];
24 struct node
25 {
26     int x,y,step;
27 }now,nxt;
28 int willx[MAXN],willy[MAXN];
29 int xx[7]={-1,+1,0,0};
30 int yy[7]={0,0,-1,+1};
31 int jzx[MAXN*100],jzy[MAXN*100];
32 queue<node>q;
33 void bfs()
34 {
35     while(q.size()!=0)
36     {
37         node p=q.front();
38         q.pop();
39         for(int i=0;i<4;i++)
40         {
41             nxt.x=p.x+xx[i];
42             nxt.y=p.y+yy[i];
43             nxt.step=p.step+1;
44             if(nxt.x>=1&&nxt.y>=1&&nxt.x<=n&&nxt.y<=m)
45             {    
46                 if(map[nxt.x][nxt.y]!=-1)continue;
47                 map[nxt.x][nxt.y]=p.step+1;
48                 q.push(nxt);
49             }
50         }
51     }
52 }
53 int main()
54 {
55     memset(map,-1,sizeof(map));
56     read(n);read(m);read(gr);read(pep);
57     for(int i=1;i<=gr;i++)
58     {
59         read(x);read(y);
60         map[x][y]=0;// 感染源
61         now.x=x;
62         now.y=y;
63         now.step=0;
64         q.push(now);
65     }
66     for(int i=1;i<=pep;i++)
67     {
68         read(x);read(y);
69         jzx[i]=x;
70         jzy[i]=y;
71     }
72         bfs();
73     for(int i=1;i<=pep;i++)
74     {
75         printf("%d\n",map[jzx[i]][jzy[i]]);
76     }
77     return 0;
78 }

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Python 是強類型的動態腳本語言 。強類型:不允許不同類型相加動態:不使用顯示數據類型聲明,且確定一個變數的類型是在第一次給它賦值的時候腳本語言:一般也是解釋型語言,運行代碼只需要一個解釋器,不需要編譯強類型語言和弱類型語言1.強類型語言:使之強制數據類型定義的語言。沒有強制類型轉化前,不允許兩... ...
  • 題目描述 已知有兩個字串 A, B 及一組字串變換的規則(至多6個規則): A1 -> B1 A2 -> B2 規則的含義為:在 A$中的子串 A1 可以變換為 B1、A2 可以變換為 B2 …。 例如:A='abcd'B='xyz' 變換規則為: ‘abc’->‘xu’‘ud’->‘y’‘y’-> ...
  • 數據類型 關鍵字 位元組數 數值型 整數型 byte 1 short 2 int 4 long 8 浮點型 float 4 double 8 布爾型 boolean 1(位) 字元型 char 2 ...
  • 今天在調試項目的時候出現下麵的錯誤信息: SoapFault looks like we got no XML document (D:\phpStudy\WWW\self.shop.xunmall.com\components\Proxy.php:477) #0 D:\phpStudy\WWW\s ...
  • Java2 平臺包括標準版(J2SE),企業版(J2EE)和為微縮版(J2ME)三個版本: Standard Edition(標準版)J2SE 包括那些構成Java語言核心的類。 例如:資料庫鏈接,介面定義,輸入/輸出,網路編程 Enterprise Edition(企業版)J2EE 包含J2SE中 ...
  • 題目背景 高手最近談戀愛了。不過是單相思。“即使是單相思,也是完整的愛情”,高手從未放棄對它的追求。今天,這個陽光明媚的早晨,太陽從西邊緩緩升起。於是它找到高手,希望在晨讀開始之前和高手一起在鰲頭山上一起散步。高手當然不會放棄這次夢寐以求的機會,他已經準備好了一切。 題目描述 鰲頭山上有n個觀景點, ...
  • import java.util.Arrays;//冒泡排序 public class Test { public static void main(String[] args) { int[] array = { 31, 22, 15, 77, 52, 32, 18, 25, 16, 7 }; /... ...
  • 題目背景 ·題目名稱是吸引你點進來的 ·實際上該題還是很水的 題目描述 ·1+1=? 顯然是2 ·a+b=? 1001回看不謝 ·哥德巴赫猜想 似乎已呈泛濫趨勢 ·以上純屬個人吐槽 ·給定一個正整數n,求將其分解成若幹個素數之和的方案總數。 輸入輸出格式 輸入格式: 一行:一個正整數n 輸出格式: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...