日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BZOJ1922 SDOI2010 大陆争霸 最短路

發布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ1922 SDOI2010 大陆争霸 最短路 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題意:給定一個圖,圖中有保護關系(u,v)表示到v之前必須先到一次u,求從1到N的最短路

題解:

定義d1[i]為直接到達i的最短距離,這個的更新和普通的Dijkstra一樣

定義d2[i]為解除i的所有保護的最短距離(不一定要在i結束),這個更新起來很簡單,每經過一個節點就將其所控制的城市的發生器數全部--,沒有發生器的城市直接用當前的距離更新即可。

最后答案顯然就是max(d1[N],d2[N])

#include <queue> #include <vector> #include <functional> #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> using namespace std;const int MAXN=3000+2; const int MAXM=70000+2; struct HASH{int u,w;HASH *next;HASH(){}HASH(int _u,int _w,HASH *_next):u(_u),w(_w),next(_next){} }*table[MAXN],mem[2*MAXM]; struct NODE{int u,w;NODE(){}NODE(int _u,int _w):u(_u),w(_w){};friend bool operator<(NODE a,NODE b){ return a.w>b.w;} }; int N,M,t[MAXN],d1[MAXN],d2[MAXN],cnt; bool flag[MAXN]; vector<int> pro[MAXN]; priority_queue<NODE> q;void Insert(int u,int v,int w){ table[u]=&(mem[cnt++]=HASH(v,w,table[u]));}int Dijkstra(int s,int e){memset(d1,0X7F,sizeof(d1));d1[s]=0,q.push(NODE(s,0));int x;while(!q.empty()){x=q.top().u,q.pop();if(flag[x]) continue;flag[x]=1;int dist=max(d1[x],d2[x]);for(HASH *p=table[x];p;p=p->next)if(d1[p->u]>dist+p->w){d1[p->u]=dist+p->w;if(!t[p->u]) q.push(NODE(p->u,max(d1[p->u],d2[p->u])));}for(int i=0;i<pro[x].size();i++){t[pro[x][i]]--;d2[pro[x][i]]=max(d2[pro[x][i]],dist);if(!t[pro[x][i]]) q.push(NODE(pro[x][i],max(d1[pro[x][i]],d2[pro[x][i]])));}}return max(d1[e],d2[e]); }int main(){cin >> N >> M;for(int i=1,u,v,w;i<=M;i++){cin >> u >> v >> w;Insert(u,v,w);}for(int i=1;i<=N;i++){cin >> t[i];for(int j=1,k;j<=t[i];j++){cin >> k;pro[k].push_back(i);}}cout << Dijkstra(1,N) << endl;return 0; } View Code

?

轉載于:https://www.cnblogs.com/WDZRMPCBIT/p/6476802.html

總結

以上是生活随笔為你收集整理的BZOJ1922 SDOI2010 大陆争霸 最短路的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。