題目1008 最短路徑問題

2022-09-08 06:09:12 字數 2497 閱讀 2979

題目描述:給你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輸出:輸出 一行有兩個數, 最短距離及其花費。

樣例輸入:

3 2

1 2 5 6

2 3 4 5

1 30 0

樣例輸出:

9 11

1 #include 

2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include

11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include 20

21using

namespace

std;

22//

constant declaration

23/*

--------------------------

*/24

//#define ll long long

25#define ll __int64

26const

int m=1100;//

最多點數

27const

int inf=1

<<30;28

const

double eps = 1e-11;29

const

double pi = acos(-1.0

);30

/*--------------------------

*/31

//some essential funtion

32/*

----------------------------------

*/33

void swap(int &a,int &b)

34int max(int a,int b)

35int min(int a,int b)

36int gcd(int a,int b) return

a; }

37/*

----------------------------------

*/38

//for (i = 0; i < n; i++)

39/*

----------------------------------

*/40

41struct

djs42

d[m],g[m][m];

4546

bool

used[m];

47void init(int

n)4857}

58for (i = 1; i <= n; i++)

5963

64 memset(used, 0, sizeof

(used));65}

6667

6869

int dijkstra(int star, int end, int

n)7085}

8687 used[min_num] = 1;88

89for (i = 1; i <= n; i++)

9096

if (!used[i] && d[i].l == d[min_num].l + g[min_num][i].l && d[i].p > d[min_num].p +g[min_num][i].p)

97100

}101

102}

103return

d[end].l;

104}

105106

107108

109110

intmain()

111127

if (g[a][b].l == c && g[b][a].p >c1)

128131

132}

133int

star, end,ans;

134 scanf("

%d%d

", &star, &end);

135 ans =dijkstra(star, end, n);

136 printf("

%d %d\n

", ans, d[end].p);

137}

138139

return0;

140 }

題目1008 最短路徑問題

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

Jobdu 題目1008 最短路徑問題

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

九度OJ 題目1008 最短路徑問題

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