CCF 交通規劃(最短路加邊權維護)
#include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<algorithm> #include<cmath> #include<queue> #include<map> #include<stack> #include<set> using namespace std; typedef long long ll; const int maxn=300010; const int N=10010; int n,m; struct node{ int v,val; node(int vv,int vall){ v=vv,val=vall; } friend bool operator<(const node &a,const node &b){ return a.val > b.val; } }; priority_queue<node> que; struct edge{ int to,val; edge(int too,int vall){ to=too,val=vall; } }; vector<edge> vec[100010]; int dis[N]; int vis[N]; int f[N]; void dij(){ int i; que.push(node(1,0)); int v; for(i=1;i<=n;++i){ dis[i]=0xfffffff; f[i]=0xfffffff; } dis[1]=0; f[1]=0; while(!que.empty()){ v=que.top().v; que.pop(); if(vis[v]) continue; vis[v]=true; for(i=0;i<vec[v].size();++i){ if(!vis[vec[v][i].to]&&dis[vec[v][i].to]>=dis[v]+vec[v][i].val){ dis[vec[v][i].to]=dis[v]+vec[v][i].val; f[vec[v][i].to]=min(f[vec[v][i].to],vec[v][i].val); que.push(node(vec[v][i].to,dis[vec[v][i].to])); } } } } int main(){ scanf("%d%d",&n,&m); int i; int u,v,l; for(i=0;i<m;++i){ scanf("%d%d%d",&u,&v,&l); vec[u].push_back(edge(v,l)); vec[v].push_back(edge(u,l)); } dij(); int ans=0; for(i=1;i<=n;++i){ ans+=f[i]; } cout<<ans<<endl; return 0; }
相關推薦
CCF 交通規劃(最短路加邊權維護)
#include<iostream> #include<cstdio> #include<cstring> #include<vector> #incl
CCF 交通規劃 最簡單的解答
#include <iostream>#include <vector>#include <algorithm>using namespace std;struct edge{ int to,cost; edge(int a
CCF-交通規劃(最短路變形->dj演算法)
問題描述 G國國王來中國參觀後,被中國的高速鐵路深深的震撼,決定為自己的國家也建設一個高速鐵路系統。 建設高速鐵路投入非常大,為了節約建設成本,G國國王決定不新建鐵路,而是將已有的鐵路改造
最短路——解決負權邊(Bellman演算法)
#include<iostream> #include<cstdio> #include<ctime> #define dif 9999 using namespace std; struct haha{ int u;
CCF 交通規劃
first 自己的 如果 clas amp esp targe data scanf 題目鏈接:http://118.190.20.162/view.page?gpid=T44 題目: 問題描述 G國國王來中國參觀後,被中國的高速鐵路深深的震撼,決定為自己的國家也
CodeForces - 1076D Edge Deletion 最短路標記邊
You are given an undirected connected weighted graph consisting of nn vertices and mmedges. Let's denote the length of the shortest pat
PTA 7-10(圖) 旅遊規劃 最短路問題
7-10(圖) 旅遊規劃 (25 分) 有了一張自駕旅遊路線圖,你會知道城市間的高速公路長度、以及該公路要收取的過路費。現在需要你寫一個程式,幫助前來諮詢的遊客找一條出發地和目的地之間的最短路徑。如果有若干條路徑都是最短的,那麼需要輸出最便宜的一條路徑。
BZOJ 4289 PA2012 Tax 差分優化最短路建邊
首先可以看一下這篇部落格… 講的非常詳細 首先發現邊權並不是直接與邊有關 有個比較顯然的轉化 考慮把點當做邊,邊看成點 在新的圖跑最短路那麼就是最後的答案 這樣做複雜度最壞到達Θ(m2)Θ(m2) 一個菊花圖就可以卡滿複雜度 考慮優化建邊 首先考慮
POJ ~ 3621 ~ Sightseeing Cows (01分數規劃 + 最短路)
題意 給一個有向圖,點數為L,邊數為P,然後輸入L個點的點權F[i],接下來輸入P條邊(u->v邊權為w),求一個點權和比邊權和最大的環,求這個比值。 題解 假設點權和為X,邊權和為Y,X/Y=ans,求ans最大。 u->v邊權為w的邊,我們建邊F[
poj2391Ombrophobic Bovines網路流最短路加二分
Language:Default Ombrophobic Bovines Time Limit: 1000MS Memory Limit: 65
poj 2112Optimal Milking(最短路加網路流加二分)
Optimal Milking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 20392  
ccf 交通規劃(迪傑斯特拉優先佇列模板)
什麼跟什麼就是劉汝佳小白書迪傑斯特拉佇列的優先佇列法 #include<bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f
訓練指南 UVALive - 4080(最短路Dijkstra + 邊修改 + 最短路樹)
連通 列表 struct tle 枚舉 有用 tin ++ pro layout: post title: 訓練指南 UVALive - 4080(最短路Dijkstra + 邊修改 + 最短路樹) author: "luowentaoaa" cata
CCF 201609-4 交通規劃_最短路
CCF 201609-4 交通規劃 傳送門 先放張圖得瑟得瑟, 一遍過, so happy. 這是一道描述非常簡單的題目, 看到題目就有點小開心, 覺得肯定能做出來的. 目的很清晰, 所有的點到首都的距離都是最短路, 那麼最短路就要儲存下來捨棄其他無用
spfa 算法模板 可求帶負權邊的最短路
cto nbsp init ems push name for 如果 class 它是隊列優化的Bellman-Ford算法。 優化的原理是:下一次松弛操作時被更新dis的點其實與上一次被更新的點有關!如果上一次被更新的點有一條邊指向某點V,那麽在下一次,點V就是可
【CCF 201609-4】交通規劃(最小的最短路徑樹 Dijkstra)
題目抽象 要求所有結點與源結點連通,使得所有邊權之和最小。即求最小的最短路徑樹。 大致思路 演算法:通過Dijkstra演算法可以構建最短路徑樹,如何保證這棵樹最小呢?這就需要一些變形了: 每個結點需要記錄它的前驅邊,每次鬆弛的條件是u.d + e ≤ v.d,
hdu 1595刪邊加最短路
find the longest of the shortest Time Limit: 1000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi
POJ 2253 Frogger (單源最短路變型 求路徑上最大邊權值的最小值)
題目連結 題目大意 輸入N(2≤N≤200)個點的座標,任意兩點可以互相到達,經過的距離為它們的歐式距離。現在從1號點到2號點有多條路徑,求這些路徑中最大邊權值的最小值。 分析 這題為單源最
100269D(最短路 spfa,邊權不固定的最短路 )
傳送vj 傳送這是一個很好的 最短路的問題 。 很好。題意: 給你n 個商品 m 中換法 a,b,c a可以用 b 或者c 來換 當然 也可以花錢買。 問你 想要得到1的最小花費。思路: 其實如果抽象一下 就是一個 邊權 可以改變的最短路問題。 既然
所有邊權均不相同的無向圖最小生成樹是唯一的證明
eight weight nbsp 不同的 權重 cnblogs 成了 http 方法 設G是所有邊權均不相同的無向聯通圖。 證明一: 首先,易證圖G中權值最小的邊一定是最小生成樹中的邊。(否則最小生成樹加上權值最小的邊後構成一個環,去掉環中任意一條非此邊則形成了另一