最短路徑 path

2021-10-06 18:26:58 字數 2683 閱讀 7013

題目描述 :

給出一張包含n個節點m條邊的無向圖,請你求出圖上兩點s,t間的最短路徑長度(請大家自行處理重邊和自環)。

輸入 :

第一行兩個數n,m,分別表示節點數和邊數,以空格隔開。

之後m行,每行3個數u,v,w,表示點u和v間有一條權值為w的邊。

最後一行,兩個數s,t表示選擇的兩個點,以空格隔開。

輸出 :

輸出乙個數,表示s,t間最短路徑的長度。

樣例輸入:

4 31 2 6

1 3 4

2 4 2

3 4樣例輸出:

12就這道題的話,暴力就可以過,但是若是資料大一點,用前向星+spfa的寫法會好一點。

#pragma gcc optimize(3,"ofast","inline")

#pragma g++ optimize(3)

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

typedef

long

long ll;

typedef

unsigned

long

long ull;

typedef pair pll;

typedef pair<

int,

int> pii;

typedef queue<

int> q_i;

typedef queue q_s;

typedef queue<

double

> q_d;

typedef queue q_ll;

typedef queue<

char

> q_c;

typedef priority_queue<

int> pq_i;

typedef priority_queue pq_s;

typedef priority_queue<

double

> pq_d;

typedef priority_queue pq_ll;

typedef stack<

int> s_i;

typedef stack s_s;

typedef stack<

double

> s_d;

typedef stack s_ll;

typedef stack<

char

> s_c;

typedef map m_ll_ll;

typedef map<

int,ll> m_i_ll;

typedef map<

int,

int> m_i_i;

typedef map m_s_ll;

typedef map<

char

,int

> m_c_i;

typedef map<

char

,ll> m_c_ll;

const ll inf=

0x3f3f3f3f

;#define rep(i,l,r) for(register int i=l;i<=r;i++)

#define per(i,l,r) for(register int i=r;i>=l;i--)

#define eif else if

#define n 2000005

#define mm(dp) memset(dp,0,sizeof(dp))

#define mm1(dp) memset(dp,-1,sizeof(dp))

#define mm2(dp) memset(dp,0x3f,sizeof(dp))

#define it set::iterator

#define fs(n) fixed<< setprecision(n)

//const double e=2.71828182845;

const

double pi =

acos(-

1.0)

;ll book[

50005];

typedef

struct

stu;

stu e[

50005];

int num=0;

void

add(

int x,

int y,

int z)

ll dis[

50015

],vis[

50015];

void

spfa

(int u)}}

}}intmain()

int s,t;

cin>>s>>t;

mm2(dis)

; dis[s]=0

;spfa

(s);

cout<

}

Codeup最短路徑 最短路徑

n個城市,標號從0到n 1,m條道路,第k條道路 k從0開始 的長度為2 k,求編號為0的城市到其他城市的最短距離。第一行兩個正整數n 2 n 100 m m 500 表示有n個城市,m條道路,接下來m行兩個整數,表示相連的兩個城市的編號。n 1行,表示0號城市到其他城市的最短路,如果無法到達,輸出...

Codeup最短路徑 最短路徑問題

給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。輸入n,m,點的編號是1 n,然後是m行,每行4個數 a,b,d,p,表示a和b之間有一條邊,且其長度為d,花費為p。最後一行是兩個數 s,t 起點s,...

最短路徑之最短路徑問題

提交 狀態 討論版 命題人 外部匯入 題目描述 平面上有n個點 n 100 每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點間的直線距離。現在的 任務是找出從一點到另一點之間的最短路徑。輸入共n m 3行,...