原创 ZOJ 1406 Jungle Roads (kruskal)

史上最水最小生成樹,不解釋,不註釋。   #include<iostream> using namespace std; int u[500],v[500],w[500]; int r[500],p[500];; int a,b,coun

原创 ZOJ 2504 Help John! (dijkstra)

我感覺這個題的敘述有問題。   john他媽給他說了一條路線,但是他想走更短的。但是他走出去的第一條路必須是她媽說的,剩下的就隨便走了。 他如果找不到可以到達的路的話,就輸出N。   數據也很弱,我的程序漏洞百出也能過。   #inclu

原创 POJ 1258 Agri-Net (prim + kruskal)

最小生成樹水題,不解釋。兩種方法,沒有用priority queue優化。 PRIM:   #include<iostream> const int INF = 99999999; using namespace std; int ma

原创 ZOJ 1721 The Doors (計算幾何+dijkstra)

起點和終點給出,讓計算他的最短路徑,由於都是正權,所以用dijkstra。每兩個點之間的距離都可以求出來,但是有的兩個點之間有牆,所以這個時候是不能把距離加到臨界矩陣中的。所以用判斷兩線段相交的方法,我看書看了好長時間,沒怎麼看懂,直接就

原创 ZOJ 1221 Risk

這個算是圖論裏面的簡單題了,可以用floyd,dijkstra,bfs去做,,只當練手。。       floyd做。。 #include<stdio.h> #include<string.h> #include<stdlib.h> in

原创 ZOJ 1430 / POJ 2679 The Erythea Campaign (bfs+dijkstra)

繁,但是不難。   首先,建圖,題中給出的是m*n的矩陣,裏面包含了所有stronghold的分佈,但是你需要把他轉換成一個圖。但是路徑不能穿過堡壘,多以說兩個堡壘之間的兩個點不能相互到達。還有就是每個點應該保存它可以到達的點的信息,當使

原创 ZOJ 1914 Arctic Network (kruskal + prim )

    KRUSKAL + PRIORITY_QUEUE #include<iostream> #include<string> #include<queue> #include<cmath> #include<stack> using

原创 ZOJ 2526 FatMouse and JavaBean II (dijkstra + 權值記錄)

fatmouse要找到從rm1到rm2的最短路徑,但是這個路徑不是唯一的。要從這些路徑中找出javabean最多的,然後輸出路徑。   題目中最困難的是,找到所有路徑,並找出符合題意的那個。。。   我的算法是先找出來一條最短路徑,然後再

原创 ZOJ 1395 Door Man

這是一道關於歐拉回路歐拉通路的非常好的一個題,能很好的理解他的算法,現在把黑書上的核心知識打出來:   無向圖的歐拉回路: 如果一個無向圖所有頂點的度爲偶數,那麼該圖可以用起始點與終點相同的一筆畫出,這一筆經歷的的路線叫做無向圖的歐拉回路

原创 ZOJ 3204 Connect them (kruskal+二級排序)

         難搞的是字典序,需要兩次排序,我之前寫的算法是正確的,就是排序的時候遺漏了一些東西導致最後出現錯誤。記住了。           至於算法的證明,我至今還沒有想的很明白,但是剛開始的時候直覺告訴我可以這樣做,faint!

原创 ZOJ 1952 Heavy Cargo (dijkstra )

又一次深刻的理解了dijkstra,他的各種變形可以解決各種各樣的問題,有時候我們用dij不僅可以求出最小值,也可以求出符合要求的最大值。只要之後更新的東西不會改變已經加入到集合S中的點 。   #include<stdio.h> #i

原创 ZOJ 1655 Transport Goods (殺入ranklist1000,撒花)

這可以歸結爲單終點最短路徑,然後變爲單源的。   每個城市的貨物運送到首都之後都不同程度減少,是原來貨物的dist[i]倍。剛開始dist初始化爲0,起點爲1,每走一段路就乘以這段路的(1-rate),每次總是把最大的放到集合S中,英文之

原创 ZOJ 2048 / POJ 2485 Highways ( kruskal )

        給出所有點的座標,可以得出每個點間的距離,可得這是一個稠密圖,按理說應該用prim,我用的kruskal,事實上在zoj的運行時間已經超過1s,效率不夠高,sunkehappy童鞋的prim排到了第一版。。我的就湊合了。

原创 ZOJ 2966 Build The Electric System (kruskal)

         MST的簡單變形。當一個邊的長度爲零時,那麼就假定這兩個點已經在一個集合中了,剩下的步驟和普通kruskal是一樣的。   #include<stdio.h> #include<string.h> #include<st

原创 ZOJ 1542 / POJ 1861 Network (kruskal )

        又是一個MST得水題,受不了。         對於讓最大邊最小,顯然可以用kruskal從最小邊慢慢添加。         真的沒有什麼可以解釋的了。。。。   #include<stdio.h> #include<st