洛谷P3393 逃離殭屍島

2022-05-19 10:45:12 字數 852 閱讀 6326

題目大意:有n個城市m條雙向道路,還有k個已經被殭屍占領的城市,規定:被占領城市不能經過,走不超過s條道路就能到達被占領城市的算危險城市,路費q,其他城市算安全城市,路費p。求從1走到n的最少花費(1和n路費為0)。

解題思路:我們先跑一遍bfs,求出哪些是危險城市,然後記錄每個城市的路費(貌似int會爆,我用long long,把被占領城市設為0x1111111111111111ll),跑spfa。

但是是點權怎麼辦?我們可以每條邊的邊權設為連線的兩個點的點權,然後最後的答案除以2即可。

c++ code:

#include#include#include#define c c=getchar()

int n,m,k,s;

long long p,q,dis[100005],ans[100005];

int head[400005],nxt[400005],to[400005],cnt,q1[200001],q2[200001],l,r;

bool vis[100005];

inline int readint()

void bfs()

} }for(int i=1;i<=n;++i)

if(dis[i]==-1)dis[i]=p;

}void spfa()

}} vis[u]=0; }}

int main()

cnt=0;

while(m--)

bfs();

spfa();

printf("%lld\n",ans[n]/2);

}

洛谷 P3393 逃離殭屍島

題目描述 小a住的國家被殭屍侵略了!小a打算逃離到該國唯一的國際空港逃出這個國家。該國有n個城市,城市之間有道路相連。一共有m條雙向道路。保證沒有自環和重邊。k個城市已經被殭屍控制了,如果貿然闖入就會被感染tat 所以不能進入。由其中任意城市經過不超過s條道路就可以到達的別的城市,就是危險城市。換句...

洛谷 P3393 逃離殭屍島

小a住的國家被殭屍侵略了!小a打算逃離到該國唯一的國際空港逃出這個國家。該國有n個城市,城市之間有道路相連。一共有m條雙向道路。保證沒有自環和重邊。k個城市已經被殭屍控制了,如果貿然闖入就會被感染tat.所以不能進入。由其中任意城市經過不超過s條道路就可以到達的別的城市,就是危險城市。換句話說只要某...

題解 逃離殭屍島 (洛谷P3393)

有 n 個點 m 條邊。現有一些點被感染,其餘的點中與被感染的點距離 leq s 的點是危險的點,點權為 q 與所有被感染的點距離 s 的點為安全的點,點權為 p 1 號店與 n 號點點權始終為 0 求 1 號點走到 n 號點的最小全值 被感染的點不能走 include include includ...