解題報告:
這裡有一點要注意的是,第乙個點時,dis陣列還沒有初始化,還全部為inf。第一次來到更新權時,才把鄰接矩陣的資料存到dis中。
#include #include#include
#include
#include
using
namespace
std;
#define n 10005
#define inf 100010
inta[n][n],ans;
bool
vis[n];
intdis[n],n;
bool
prim()
ans=0
;
///從第乙個點搜起。到達自己的權為0
dis[1]=0
;
///搜尋每個節點,加入到集合中來
for(int i=1; i<=n; i++)
}if(tmp==inf) ///
搜尋不成功
vis[k]=true; ///
標記走過
ans=max(ans,dis[k]);
///更新到每個節點的最小權
for(int j=1; j<=n; j++)}}
}int
main()
}prim();
cout
}return0;
}
POJ2421 prim演算法求最小生成樹
題意 鄰接村子裡面所有的村莊,使得道路的總長度最小。分析 由於題意說會有已經通好道路的村莊。我們任然可以利用prim求解最小生成樹,只要把已經通好道路的權值置為0,就行了。view code 1 i m the topcoder2 c3 include 4 include 5 include 6 i...
求最大權二分匹配的KM演算法
最大權二分匹配問題就是給二分圖的每條邊乙個權值,選擇若干不相交的邊,得到的總權值最大。解決這個問題可以用km演算法。理解km演算法需要首先理解 可行頂標 的概念。可行頂標是指關於二分圖兩邊的每個點的乙個值lx i 或ly j 保證對於每條邊w i j 都有lx i ly j w i j 0。如果所有...
poj 3469 isap演算法求最大流
include include define debug ifdef debug define debug printf va args else define debug endif define n 20010 define m 1800000 define max int 0x3fffffff...