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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[Bzoj4289]PA2012 Tax(Dijkstra+技巧建图)

發布時間:2025/3/19 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Bzoj4289]PA2012 Tax(Dijkstra+技巧建图) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

給出一個N個點M條邊的無向圖,經過一個點的代價是進入和離開這個點的兩條邊的邊權的較大值,求從起點1到點N的最小代價。起點的代價是離開起點的邊的邊權,終點的代價是進入終點的邊的邊權

N<=100000

M<=200000

Solution

這題關鍵在于化邊為點,把無向邊拆成2條有向邊

考慮最直白的一種建圖方法,對于每一個點u,它的每一條入邊向所有出邊連邊

但這樣邊數太多了,最壞是\(M^2\)條邊,不可行

考慮用差值來建圖,每條出邊向第一條比它大的出邊連一條權值為權差值的邊,并且反向連一條權值為0的邊

然后每條入邊向對應的出邊連一條為自身權值的邊

設一個超級源點S和匯點T,S向1的所以出邊連邊,n的所以出邊向T連邊

這樣邊數是m級別的,然后跑最短路即可,

這題邊數較多,我用spfa過不了,用Dijkstra堆優化可以過

Code

#include <cstdio> #include <algorithm> #include <queue> #include <cstring> #define ll long long #define Pa pair<ll,int> using namespace std;struct info{int to,nex,w;}e[400010],ne[2000010]; int n,m,tot=1,head[400010],nhead[400010],S,T; ll dis[400010]; priority_queue<Pa,vector<Pa>,greater<Pa> > q;inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f; }inline void Link(int u,int v,int w){e[++tot].to=v;e[tot].w=w;e[tot].nex=head[u];head[u]=tot; }inline void nLink(int u,int v,int w){ne[++tot].to=v;ne[tot].w=w;ne[tot].nex=nhead[u];nhead[u]=tot; }bool cmp(int a,int b){return e[a].w<e[b].w;} int tmp[400010],tp; void Build(){tot=1;S=1,T=m*2+2;for(int i=1;i<=n;++i){tp=0;for(int j=head[i];j;j=e[j].nex) tmp[++tp]=j;sort(tmp+1,tmp+tp+1,cmp);for(int j=1;j<=tp;++j){int u=tmp[j],nex=tmp[j+1];if(e[u].to==n) nLink(u,T,e[u].w);if(i==1) nLink(S,u,e[u].w);nLink(u^1,u,e[u].w);if(j<tp) nLink(u,nex,e[nex].w-e[u].w),nLink(nex,u,0);}} }void Dijkstra(){for(int i=S;i<=T;++i)dis[i]=1ll<<60;q.push(make_pair(0,S));dis[S]=0;while(!q.empty()){int u=q.top().second;ll Dis=q.top().first; q.pop();if(Dis>dis[u]) continue;for(int i=nhead[u];i;i=ne[i].nex){int v=ne[i].to;if(dis[v]>dis[u]+ne[i].w){dis[v]=dis[u]+ne[i].w;q.push(make_pair(dis[v],v));} } } }int main(){n=read(),m=read();for(int i=1;i<=m;++i){int u=read(),v=read(),w=read();Link(u,v,w);Link(v,u,w);}Build();Dijkstra();printf("%lld\n",dis[T]);return 0; }

轉載于:https://www.cnblogs.com/void-f/p/8537897.html

總結

以上是生活随笔為你收集整理的[Bzoj4289]PA2012 Tax(Dijkstra+技巧建图)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: av在线免| 久久色婷婷 | 东北少妇av | 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 亚洲视频一区二区三区 | 97久久国产亚洲精品超碰热 | 九草视频在线观看 | 手机av免费看| 饥渴少妇色诱水电工 | 日本泡妞视频 | 青青草日本| 在线中文字幕日韩 | 精品人妻一区二区三区蜜桃 | 成人影片在线播放 | 在线不卡免费视频 | 懂色av蜜臀av粉嫩av分 | 8x8x国产精品一区二区 | 天堂资源在线观看 | 国产精品一线天粉嫩av | 波多野结衣在线观看一区二区三区 | 中文字幕一区二区在线观看视频 | 婷婷激情电影 | 日本美女逼 | jizzjizz中国精品麻豆 | 久久黄色大片 | 狠狠躁18三区二区一区视频 | 久久11| 大号bbwassbigav女 | 天天色天天射天天操 | 欧美乱视频 | 欧美黄色小视频 | 日韩性大片 | 国产白丝精品91爽爽久久 | 韩国三级免费 | 亚洲精选久久久 | 在线播放黄色网址 | 成人小网站 | 色爽爽一区二区三区 | 国产精品人人妻人人爽人人牛 | 一区二区三区不卡在线 | 40到50岁中老年妇女毛片 | 精品视频一区二区在线观看 | 97人妻人人揉人人躁人人 | av大片网站 | 日本一区二区三区视频在线播放 | 精品九九 | 射美女| 伊人久久一区二区三区 | 亚洲 高清 成人 动漫 | 天天曰夜夜曰 | 老熟女高潮一区二区三区 | 日韩欧美亚洲在线 | 一区二区三区在线免费观看视频 | 国内特级毛片 | 26uuu精品一区二区 | 亚洲人妻一区二区三区 | 91九色高潮 | 日日碰狠狠添天天爽 | 成人午夜看片 | 不卡中文字幕在线观看 | 香港a毛片 | 日韩va在线观看 | 少妇一夜三次一区二区 | 日韩成人区| 伊人久久大香线蕉综合75 | 欧美日韩二三区 | 岛国在线视频 | jizz美女 | 黄色片免费观看视频 | 日韩欧美国产一区二区三区在线观看 | 草逼视频网站 | 欧美日韩激情在线一区二区三区 | 亚洲日本在线观看视频 | 久久久久久日产精品 | 欧美日韩中文字幕 | 2021狠狠操 | 双性受孕h堵精大肚生子 | 久久精品亚洲精品国产欧美 | 中文字幕一二三四区 | 久久99激情 | 91污片 | 欧美一级视频 | 亚洲欧美一区二区三区在线 | 欧美日韩伊人 | 久久久久人妻一区精品 | 91亚洲国产成人久久精品网站 | 久久色图 | 日韩欧美国产成人精品免费 | 给我免费观看片在线电影的 | av毛片在线播放 | 91高清视频免费观看 | 成人小视频免费观看 | 国产丝袜精品视频 | 丰满人妻一区二区三区46 | 禁漫天堂下载18 | 日韩欧美一区二区在线 | 午夜精品免费视频 | 精品一区在线看 | 日韩一区二区三区三四区视频在线观看 |