最短路的乙個題目,不知道自己為什麼用spfa過不去,所以用了dij 自己做了一下優化,這個就是更新結點的時候需要注意一下,更新結點先判斷距離,然後判斷花費,
有了一張自駕旅遊路線圖,你會知道城市間的高速公路長度、以及該公路要收取的過路費。現在需要你寫乙個程式,幫助前來諮詢的遊客找一條出發地和目的地之間的最短路徑。如果有若干條路徑都是最短的,那麼需要輸出最便宜的一條路徑。
輸入說明:輸入資料的第1行給出4個正整數n、
m、s、
d,其中
n(2)是城市的個數,順便假設城市的編號為0~(n−
1);m是高速公路的條數;
s是出發地的城市編號;
d是目的地的城市編號。隨後的
m行中,每行給出一條高速公路的資訊,分別是:城市1、城市2、高速公路長度、收費額,中間用空格分開,數字均為整數且不超過500。輸入保證解的存在。
在一行裡輸出路徑的長度和收費總額,數字間以空格分隔,輸出結尾不能有多餘空格
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long
using namespace std;
const int inf = 0x3f3f3f3f;
const int maxn = 500 + 10;
int dir[4][2] = ,,,};
struct edge
edge(int a,int b,int c)
};vectorg[maxn*maxn];
typedef pairp;
int d[maxn];
int vis[maxn];
int cost1[maxn];
int n,m,s,e;
void dij(int s)
while(1)
if(t == -1)
break;
vis[t] = 1;
for(int i = 0;i < g[t].size();i++)
else if(d[tmp.to] == d[t] + tmp.dis)}}
}printf("%d %d\n",d[e],cost1[e]);
}int main()
dij(s);
return 0;
}
旅遊規劃 (25 分)
有了一張自駕旅遊路線圖,你會知道城市間的高速公路長度 以及該公路要收取的過路費。現在需要你寫乙個程式,幫助前來諮詢的遊客找一條出發地和目的地之間的最短路徑。如果有若干條路徑都是最短的,那麼需要輸出最便宜的一條路徑。輸入說明 輸入資料的第1行給出4個正整數n m s d,其中n 2 n 500 是城市...
5 9 旅遊規劃 25分
有了一張自駕旅遊路線圖,你會知道城市間的高速公路長度 以及該公路要收取的過路費。現在需要你寫乙個程式,幫助前來諮詢的遊客找一條出發地和目的地之間的最短路徑。如果有若干條路徑都是最短的,那麼需要輸出最便宜的一條路徑。輸入格式 輸入說明 輸入資料的第1行給出4個正整數n m s d,其中nnn 2 n ...
7 2 旅遊規劃(25 分)
7 2 旅遊規劃 25 分 有了一張自駕旅遊路線圖,你會知道城市間的高速公路長度 以及該公路要收取的過路費。現在需要你寫乙個程式,幫助前來諮詢的遊客找一條出發地和目的地之間的最短路徑。如果有若干條路徑都是最短的,那麼需要輸出最便宜的一條路徑。輸入說明 輸入資料的第1行給出4個正整數n m s d,其...