這道題,典型的最短路。
一開始求方便,用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指令碼寫的互動性強一些,這樣在操作的時候會更加人性化。於是後來的腳 本就備寫的...