題目描述:
給你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
題目分析:
題目本身不難,編寫時細心一點!
主要學習一下圖的鄰接鍊錶表示。
有幾點需要注意:由於圖是無向的,所以在用鍊錶儲存的時候記得把b也push進去
# include# includeusing namespace std;
# define n 10001
struct edge
;int main()
while(m--)
int s,t;
scanf("%d%d",&s,&t);
//初始化
for(i=1;i<=n;i++)
mark[s]=true;
dis[s]=0;
int newp=s;
for(i=1;idis[newp]+le||(dis[t]==dis[newp]+le&&mincost[t]>mincost[newp]+co))
}//尋找下乙個要遍歷的點,全域性搜尋
int min=10000000;
for(k=1;k<=n;k++)
}mark[newp]=true;
} printf("%d %d\n",dis[t],mincost[t]); }
return 0;
}
九度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。最後一行是兩個數 ...