九度 題目1008:最短路徑問題
最短路徑問題,首先想到了貪心演算法實現的dijkstra演算法;這道題我用了連結串列的儲存方式,其實用鄰接矩陣也可以,主要為了練手,並且連結串列比矩陣要節約空間;
- 題目描述:
- 給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。
- 輸入:
-
輸入n,m,點的編號是1~n,然後是m行,每行4個數 a,b,d,p,表示a和b之間有一條邊,且其長度為d,花費為p。最後一行是兩個數 s,t;起點s,終點t。n和m為0時輸入結束。
(1<n<=1000, 0<m<100000, s != t)
- 輸出:
- 輸出 一行有兩個數, 最短距離及其花費。
- 樣例輸入:
-
3 2 1 2 5 6 2 3 4 5 1 3 0 0
- 樣例輸出:
- 9 11
- AC程式碼如下(主要運用了連結串列+Dijkstra演算法):
#include
<stdio.h>
#include
<string.h>
#define
inf 10000000
const
int
Maxn = 200005;
int
N,M;
int
visit[1001];//標記某個節點是否被求出最短距離
int
first[1001];//儲存每個節點為始點的連結串列的第一個邊的標號
struct
Edge{
int
target;
//終點
int
next;
//下一條邊的標號
int
dt,ct;
//邊的長度和花費
}edge[Maxn];
struct
BNode{
int
dist,cost;
}Node[1001];
//到達某點的最短路和花費
//相當於連結串列的頭插發,很有意思。比用鄰接矩陣高效多了
void
addEdge(
int
index,
int
u,
int
v,
int
d,
int
c){
edge[index].next
= first[u];
//將這條邊插入到u為初始節點的連結串列的頭結點處
edge[index].target
= v;
edge[index].dt
= d;
edge[index].ct
= c;
first[u]
= index;
}
int
findMinNode(){
//在剩下的所有節點中找最小的
int
i, Max = inf;
int
index = 0;
for
(i
= 1; i <= N; i++){
if
(Node[i].dist
< Max && !visit[i]){
Max
= Node[i].dist;
index
= i;
}
}
return
index;
}
void
dijk(
相關推薦
九度題目1008:最短路徑問題
題目描述:
給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。
輸入:
輸入n,m,點的編號是1~n,然後是m行,每行4個數 a,b,d,p,表示a和b之間有一條邊,且其長度為
九度 題目1008:最短路徑問題
最短路徑問題,首先想到了貪心演算法實現的dijkstra演算法;這道題我用了連結串列的儲存方式,其實用鄰接矩陣也可以,主要為了練手,並且連結串列比矩陣要節約空間;
題目描述:
給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終
九度OJ 1008:最短路徑問題 (最短路)
時間限制:1 秒
記憶體限制:32 兆
特殊判題:否
提交:8064
解決:2685
題目描述:
給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。
輸入
九度:題目1008:最短路徑問題
題目描述:
給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。
輸入:
輸入n,m,點的編號是1~n
九度 oj 題目1008:最短路徑問題
這道題告訴我們 INT_MAX, 慎用,dijkstra 有時加溢位了,你都不知道
#include <cstdio>
//#include <climits>
#include <algorithm>
using namespace
九度 OJ 題目1008:最短路徑問題 (Dijstra 演算法)
題目描述:
給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。
輸入:
輸入n,m,點的編號是1~n,然後是m行,每行4個數 a,b,d,p,表示a和b之間有一條邊,且其長度為
九度 題目1020:最小長方形
一.題目描述:
給定一系列2維平面點的座標(x, y),其中x和y均為整數,要求用一個最小的長方形框將所有點框在內。長方形框的邊分別平行於x和y座標軸,點落在邊上也算是被框在內。
輸入:
測試輸入包含若干測試用例,每個測試用例由一系列座標組成,每對座標佔
九度 題目1337:尋找最長合法括號序列
題目描述:
給你一個長度為N的,由’(‘和’)’組成的括號序列,你能找出這個序列中最長的合法括號子序列麼?合法括號序列的含義便是,在這個序列中,所有的左括號都有唯一的右括號匹配;所有的右括號都有唯一的左括號匹配。例如:((()))()()便是一個長度為10的合法括號序列,而
九度-題目1138:進制轉換
i++ 十進制 ring str 進制數 ble for 進制 進制轉換 http://ac.jobdu.com/problem.php?pid=1138
題目描述:
將一個長度最多為30位數字的十進制非負整數轉換為二進制數輸出。
輸入:
多組數據,每行為一個長度不超過
九度 題目1394:五連擊數組
ace 一個 using return include pop turn span printf
轉載請註明本文鏈接http://blog.csdn.net/yangnanhai93/article/details/40506571
題目鏈接:http://ac.job
九度-題目1214:醜數
得到 方法 產生 include pac number return clu n) http://ac.jobdu.com/problem.php?pid=1214
題目描述:
把只包含因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因
筆記:最短路徑算法—Dijkstra(迪傑斯特拉)
意思 最終 else min out 拓展 clas stream 便是
文中代碼下如下:
#include<iostream>
#include<cstdio>
#include<fstream>
#include<algor
hihocoder1081 :最短路徑·一
http://hihocoder.com/problemset/problem/1081
描述
萬聖節的早上,小Hi和小Ho在經歷了一個小時的爭論後,終於決定了如何度過這樣有意義的一天——他們決定去闖鬼屋!
在鬼屋門口排上了若干小時的隊伍之後,剛剛進入鬼屋的小Hi和小Ho都頗飢餓,於
hdu3790:最短路徑問題
Problem Description
給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。
Input
輸入n,m,點的編號是1~n,然後是m行,每行4個數 a,b,d
資料結構基礎之圖(下):最短路徑
轉自:http://www.cnblogs.com/edisonchou/p/4691020.html
圖(下):最短路徑
圖的最重要的應用之一就是在交通運輸和通訊網路中尋找最短路徑。例如在交通網路中經常會遇到這樣的問題:兩地之間是否有公路可通;在有多條公路可通的情況下,哪
A.pro讀演算法の11:最短路徑之Dijkstra演算法
此文是獻給OIer看的。講的東西比較基礎(其實我理解Dijkstra花了很長時間)。NOIP2018結束約有1個月了,但是我們仍要繼續前進,為NOIP2019做準備。本節學習Dijkstra的演算法思想和實現,以及優先佇列和堆優化。線段樹也可以做到優化,甚至可能還更快,但是我太弱了不會。。
圖論四:最短路徑演算法
一、廣度優先搜尋
1、思路:距離開始點最近的點首先被賦值,最遠的點最後被賦值。
2、適用範圍:對於非負數權的無圈圖來說(單源最短路徑)。
3、演算法實現:
(1)一個佇列記錄每個每個節點的編號。
(2)將起始節點入隊,將所有節點到起始節點的距離設定為無窮大,起始節點到起始節點的距離為0;
(3)取
圖論經典演算法(通俗易懂):最短路徑和最小生成樹
一、最短路問題
求圖的最短路問題,幾乎是圖論的必學內容,而且在演算法分析與設計中也會涉及。很多書上內容,
實在沒法看,我們的圖論教材,更是編的非常糟糕,吐槽,為啥要用自己學校編的破教材,不過據說
下一屆終於要換書了。
言歸正傳,開始說明最短路問題。
九度 題目1208:10進位制 VS 2進位制
#include <stdio.h>
#include <string.h>
char ch1[1000],ch2[4000]; //ch1儲存使用者輸入的10進位制大整數,ch2儲存ch1轉換後的翻轉的2進位制
int num[1000];//儲存ch2轉換的新的2進位制大整數!
v
九度 題目1014:排名
按總分降序列印過錄取線的學生,總分相同時,id小的在前(id升序)。
程式碼:
#include <vector>
#include <algorithm>
#include <iostream>
#include <string