原创 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