洛谷 P1332 血色先鋒隊(BFS)

2021-10-06 01:45:25 字數 1595 閱讀 5003

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

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

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

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

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

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

5 4 2 3

1 15 4

3 35 3

2 4313

#include

using

namespace std;

#define pi acos(-1)

#define mod 1000000007

#define ll long long

#define ull unsigned long long

#define mem(a) memset(a,0,sizeof(a))

#define cio ios::sync_with_stdio(false);

int next[4]

[2]=

,,,}

;int s[

550]

[550];

int vis[

550]

[550];

int n, m, a, b;

struct node

q[250010

], jud[

250010];

intdis

(int x1,

int y1,

int x2,

int y2)

//計算曼哈頓距離

void

bfs(

int sx,

int sy)

//廣搜

} head++;}

}int

main()

}for

(int i =

0; i < a; i++

)for

(int i =

0; i < a; i++

)for

(int i =

0; i < b; i++

)return0;

}

洛谷 P1332 血色先鋒隊

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

P1332 血色先鋒隊

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

題解 P1332 血色先鋒隊

中心思想是進行乙個貪心 輸入乙個領主的位置,求出與所有感染源的曼哈頓距離,再取最小值,找到最近的乙個感染源,輸出感染源與這個領主的曼哈頓距離。ps 曼哈頓距離 在平面上,座標 x1,y1 的i點與座標 x2,y2 的j點的曼哈頓距離為 d i j x1 x2 y1 y2 include using ...