usaco3 2 7香甜的忌廉

2021-06-22 23:48:07 字數 1424 閱讀 5469

這道題,典型的最短路。

一開始求方便,用floyd-warshall演算法,結果超時了。。。

所以,需要一種高效率的方法求最短路,有兩種,一種是spfa,一種是

dijkstra的堆優化,本人只會後一種。

利用stl庫裡面的優先佇列,儲存當時的一些路,從而節省在一開始的尋找當時最短的next的時間。

具體就在**裡了。

提供兩種儲存邊的方法(說是兩種,其實差不多。。。)

#include

#include

#include

#include

#include

#include

using namespace std;

struct aaa

};priority_queued;

int dist[810],shu[810];

struct bbb;

vectorg;

vectormap[810];

int n,m,p;

int mins=99999999;

bool key[810];

int main()

for(int i=0;i

#include

#include

#include

using namespace std;

struct vertex v[801];

int ncow, npastures, nedge;

int cow[503];

const int inf = 0x7ffff;

// edge

vector < int >map[801];

vector < int >val[801];

int dijkstra(int start)

priority_queue < pair < int, int > >heap;

heap.push(make_pair(0, start));

v[start].dist = 0;

int u, w, cost;

while (!heap.empty()) }}

} int totaldist = 0;

for (int j = 0; j <= ncow; j++)

totaldist += v[cow[j]].dist;

//cout << start << ' '  << totaldist << endl;

return totaldist;}

int main()

int min = inf, walkdist;

for (int i = 1; i <= npastures; i++)

cout << min << endl;

return 0;

}

3 27學習內容

資料結構 表 一對一關係 線性表 操作不受限制的表 棧 只能在棧頂進行新增和刪除操作的線性表 操作受限 字串 是乙個操作不受限,型別受限制的線性表 佇列 只能在隊頭刪除,隊尾新增 操作受限 樹 一對多 網 多對多 線性表 特點 分配連續的空間,每個空間大小相同 節省空間,只存資料,不存位址 優點 按...

3 27 程式設計練習

pat1001 基礎題,幾乎就是練習下基本的知識語法 迴圈 條件輸入輸出。includeint main printf d n i return 0 pat b1032 基礎題 要考慮特殊情況及初始化賦值 比如從1還是0開始 不然就會卡在特殊的測試案例上 memset語法 memset 陣列名,值,...

IBM實習日記 3 27

今天上午進行了對tds的離線備份的指令碼,其實本來功能很簡單,但是要給那些未來將接管我們的服務期又從來沒有接觸過linux的管理員用還是乙個 問題。lihao的觀點是要把文件寫清楚,而我覺得這只是一方面,要把這個shell指令碼寫的互動性強一些,這樣在操作的時候會更加人性化。於是後來的腳 本就備寫的...