有\(n\)個點\(m\)條邊。現有一些點被感染,其餘的點中與被感染的點距離\(\leq s\) 的點是危險的點,點權為\(q\);與所有被感染的點距離\(>s\)的點為安全的點,點權為\(p\)。\(1\)號店與\(n\)號點點權始終為\(0\),求\(1\)號點走到\(n\)號點的最小全值(被感染的點不能走)。
#include #include #include #include #include #define int long long
using namespace std;
const int inf = 1e9 + 7;
const int maxn = 100005;
int n, m, k, s, p, q;
int val[maxn], dis[maxn];
int dan[maxn], dep[maxn], vis[maxn], zomb[maxn];
int edgenum, front[maxn], vet[maxn << 2], nxt[maxn << 2];
queueque;
inline void addedge(int u, int v)
void bfs()
while (!que.empty())
}} //bfs求出所有危險點。
void spfa()
}} }
} //最短路
signed main()
bfs();
for (int i = 1; i <= n; i++)
if (dan[i])
val[i] = q;
else val[i] = p; //賦點權
for (int i = 1; i <= k; i++)
val[zomb[i]] = inf; //這樣就能在跑最短路時不取被感染的點
val[1] = val[n] = 0;
spfa();
printf("%lld\n", dis[n] / 2);
return 0;
}
洛谷 P3393 逃離殭屍島
題目描述 小a住的國家被殭屍侵略了!小a打算逃離到該國唯一的國際空港逃出這個國家。該國有n個城市,城市之間有道路相連。一共有m條雙向道路。保證沒有自環和重邊。k個城市已經被殭屍控制了,如果貿然闖入就會被感染tat 所以不能進入。由其中任意城市經過不超過s條道路就可以到達的別的城市,就是危險城市。換句...
洛谷 P3393 逃離殭屍島
小a住的國家被殭屍侵略了!小a打算逃離到該國唯一的國際空港逃出這個國家。該國有n個城市,城市之間有道路相連。一共有m條雙向道路。保證沒有自環和重邊。k個城市已經被殭屍控制了,如果貿然闖入就會被感染tat.所以不能進入。由其中任意城市經過不超過s條道路就可以到達的別的城市,就是危險城市。換句話說只要某...
洛谷P3393 逃離殭屍島
題目大意 有n個城市m條雙向道路,還有k個已經被殭屍占領的城市,規定 被占領城市不能經過,走不超過s條道路就能到達被占領城市的算危險城市,路費q,其他城市算安全城市,路費p。求從1走到n的最少花費 1和n路費為0 解題思路 我們先跑一遍bfs,求出哪些是危險城市,然後記錄每個城市的路費 貌似int會...