1. 程式人生 > >CCF 交通規劃(最短路加邊權維護)

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中權值最小的邊一定是最小生成樹中的邊。(否則最小生成樹加上權值最小的邊後構成一個環,去掉環中任意一條非此邊則形成了另一