ccf 交通规划(迪杰斯特拉优先队列模板)
生活随笔
收集整理的這篇文章主要介紹了
ccf 交通规划(迪杰斯特拉优先队列模板)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
什么跟什么就是劉汝佳小白書迪杰斯特拉隊(duì)列的優(yōu)先隊(duì)列法
#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
typedef pair<int,int> pii;
vector<pair<int,int> >g[10010];
bool vis[10010];
int cost[10010];
int dist[10010];
int n,m;
priority_queue<pii,vector<pii>,greater<pii> > q;
void dij()
{for(int i=1;i<=n;i++)dist[i]=INF;dist[1]=0;cost[1]=0;q.push(make_pair(dist[1],1));while(!q.empty()){pii t=q.top();q.pop();int v=t.second;if(vis[v]) continue;vis[v]=1;for(int i=0;i<g[v].size();i++){int u=g[v][i].first;int c=g[v][i].second;if(dist[v]+c<dist[u]){dist[u]=dist[v]+c;cost[u]=c;q.push(make_pair(dist[u],u));}if(dist[v]+c==dist[u]){cost[u]=min(cost[u],c);}}}}
int main()
{int u,v,w;cin>>n>>m;for(int i=0;i<m;i++){cin>>u>>v>>w;g[u].push_back(make_pair(v,w));g[v].push_back(make_pair(u,w));}dij();long long ans=0;for(int i=1;i<=n;i++)ans+=cost[i];cout<<ans<<endl;
}
總結(jié)
以上是生活随笔為你收集整理的ccf 交通规划(迪杰斯特拉优先队列模板)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树状dp(这个人写得好多转来慢慢看)
- 下一篇: usaco Electric Fence