「哈撒給~」,亞索乙個q打中了殘血的維克多並掛上了點燃,正當亞索準備單殺維克多時,突然一聲大喝!從兩邊草叢中竄出了兩個壯漢,牛頭、蒙多。
就在這危險的關頭,亞索得以最快的速度逃回泉水,才能不被擊殺。
現在我們假定召喚師峽谷由許多地點組成,地點之間存在道路。亞索當前所在s地點,泉水地點為e,並已知各地點的連線情況,亞索想知道逃回泉水的最短的路徑長度、以及這樣的路徑條數。
輸入第一行包括四個整數n,m,s,e。表示有n個地點,m條道路,亞索當前所在的地點編號為s,泉水地點編號為e。
接下來m行每行三個整數u,v,w表示地點u到地點v的距離為w。
輸出第乙個整數表示最短的路線距離,第二個整數表示最短的路線條數。
5 6 1 5
1 2 5
2 5 5
1 3 3
3 5 7
1 4 1
4 5 9
10 3
題中的圖為無向圖。
地點編號為1~n。
注意兩個地點之間可能有多條道路。
30% 1<=n<=10,1<=m<=20。
100% 1<=n<=100,1<=m<=100000。
100% 1<=u,v<=n,1<=w<=10。
輸入輸出均在整型(int)範圍內。
使用dijskra演算法即可通過此題。當然本題也可以使用bellman-ford演算法,不過dij演算法實現更簡單。
為什要自己再define乙個int_max呢?因為我發現有的編譯器他不支援int_max寫法,乾脆就直接自己定義乙個。
#include #include #include using namespace std;
#define int_max 2147483648
//這題可以使用優先佇列來處理最小值,不過我懶得寫了
//priority_queue, greater> pq;
long long arcs[101][101] = };//鄰接矩陣
long long dist[101];
bool vis[101];//某節點是否訪問過
int count = 1;
void dij(int n, int cur, int tar)
dist[cur] = 0;
vis[cur] = true;
for (int i = 1; i <= n; i++)
} //找到距離初始節點最短的點
vis[cur] = true;
for (j = 1; j <= n; j++)}}
}int main()
dij(n, cur, tar);
cout << dist[tar] << " " << count << endl;
return 0;
}
演算法與資料結構實驗題1 9
實驗任務 上回說到,你奔走於各個世界線拯救靜靜。現在,完成任務的你決定玩個簡單的遊戲靜一靜。我們知道,數字在計算機裡是用二進位制儲存的,現在你想知道如果把乙個數字的二進位制倒過來是多少。比如 int a 5,用二進位制表示就是00000000000000000000000000000101。把它倒過...
演算法與資料結構實驗題 3 1 火車
實驗任務 tonyy 等火車無聊的時候,會去觀察火車的排列,有一天他思考這麼乙個問 題,火車總站的火車只能進站,要出站的話只能先出最後進站的那輛車,那麼知 道火車的進站順序,能不能把它的出站順序調整成火車站想要的呢?資料輸入 輸入第一行為乙個正整數 n 表示火車輛數 編號 1 n 1 n 9 然後為...
資料結構與演算法實驗祝恩 《資料結構與演算法》實驗報告
保持青春的秘訣,是有一顆不安分的心。資料結構與演算法 實驗報告 模板 實驗題目 線性表綜合實驗 班級 姓名 學號 完成日期 一 實驗目的 熟悉線性表的基本操作在兩種儲存結構上的實現,其中以熟悉各種鍊錶的操作為重點。通過具體應用例項在複習高階程式語言使用方法的基礎上初步了解資料結構的應用。二 實驗內容...