題目大意:
就是乙個單源最短路的問題,按照dijkstra演算法做就行了。關鍵是要除了cost最小的問題,就在(dis[ed.to]>=dis[e.to]+ed.dis)的時候更新一下就可以了,不能用有沒有訪問過該節點來判斷需不需要更新。
這題的測試資料非常水,即使你只是簡單地敲出了乙個最短路,好像也差不多能過。
#include#include#include#include#includeusing namespace std;
int n,m;
struct edge
vis[e.to] = 1;
for(ite = g[e.to].begin();ite=dis[e.to]+ed.dis)}}
}int main()
scanf("%d%d",&s,&t);
dijkstra();
cout<
九度OJ 題目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。最後一行是兩個數 ...
九度OJ 1008 最短路徑問題
題目描述 給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。輸入 輸入n,m,點的編號是1 n,然後是m行,每行4個數 a,b,d,p,表示a和b之間有一條邊,且其長度為d,花費為p。最後一行是兩個數 ...