![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最小生成树
文章平均质量分 64
墨温温
呆萌理工女~ ~
展开
-
最小生成树之Prim算法
void prim() { memset(v,0,sizeof(v)); v[1]=1; for(int i=1;i<=n;i++) { dist[i]=a[1][i]; } int sum=0,point; for(int i=1;i<n;i++) { int minn=inf; for(int j=1;j<=n;j++) {原创 2015-07-10 21:35:44 · 374 阅读 · 0 评论 -
POJ 1258
#include #include #include using namespace std; #define maxx 105 int k,p[maxx]; int n; struct Edge { int u,v,w; }edge[maxx*maxx/2]; bool cmp(Edge a,Edge b) { return a.w<b.w; } int findpa(int x)原创 2015-07-15 20:24:52 · 310 阅读 · 0 评论 -
POJ 2421
#include #include #include using namespace std; int n,q,k,p[105]; struct Edge { int u,v,w; }edge[100100]; int find(int x) { return p[x]==x?x:p[x]=find(p[x]); } bool cmp(Edge a,Edge b) { return原创 2015-07-15 20:14:59 · 306 阅读 · 0 评论 -
POJ 1751
#include #include using namespace std; const int M=5000000+10; const int N=10000+10; int f[N]; int x[N],y[N]; int n,cnt; struct p { int u,v,w; }num[M]; bool cmp(p x,p y) { return x.w<y.w; }原创 2015-07-15 20:22:37 · 393 阅读 · 0 评论 -
POJ 2349
#include #include #include #include using namespace std; #define maxx 505 int s,n,k; int p[maxx]; struct Edge { int u,v; double w; }edge[maxx*maxx/2]; struct Pos { double x,y; }pos[maxx]; bo原创 2015-07-15 20:21:07 · 327 阅读 · 0 评论 -
ZOJ 1586
#include #include #include using namespace std; int n,k; int a[1005]; int p[1005]; struct Edge { int u,v,w; }edge[1000010]; bool cmp(Edge a,Edge b) { return a.w<b.w; } int find(int x) { retur原创 2015-07-15 20:18:14 · 496 阅读 · 0 评论 -
POJ 2031
#include #include #include #include #include using namespace std; #define esp 10E-9 int k,n; int p[105]; struct Edge { int u,v; double w; }edge[105*105]; struct Cor { double x,y,z,r;原创 2015-07-15 20:11:58 · 300 阅读 · 0 评论 -
POJ 1251
Jungle Roads Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20765 Accepted: 9560 Description The Head Elder of the tropical island of Lagrishan ha原创 2015-07-15 20:02:24 · 338 阅读 · 0 评论 -
POJ 1287
#include #include #include #include using namespace std; struct Edge { int u,v,w; }edge[100000]; int p[105]; int m,k; long long n; bool cmp(Edge a,Edge b) { return a.w<b.w; } int find(int x) {原创 2015-07-15 20:07:56 · 294 阅读 · 0 评论 -
POJ 1679
求最小生成树是否唯一,即求次小生成树,判断它的边权和是否和最小生成树的一样。 还是用的kruskal算法,先求得最小生成树,再记录下路径,然后枚举删除最小生成树中的一条边,再构造新的生成树,看是否和最小权值相同。 AC代码: #include #include #include using namespace std; #define maxx 105 int n,p[maxx],m;原创 2015-07-15 15:23:28 · 264 阅读 · 0 评论 -
HDU 1875
#include #include #include #include using namespace std; int n,t,m,k; int p[105]; struct Edge { int u; int v; double w; }edge[5010]; struct Island { double x; double y; }island[105]; boo原创 2015-07-15 20:29:28 · 314 阅读 · 0 评论 -
POJ 3026 (BFS+最小生成树)
题意好难理解~~ 大意:在一幅图里,‘S’代表起点,‘A’代表外星人,‘#’代表墙,‘ ’代表通路。你带着一群人从S出发,去找到所有的A,每到一个A处,你的队伍可以分为很多支,继续从该点开始遍历,要求找到所有的外星人,并且路径长度最短。最小生成树问题,A和S可以视为相同的。首先需要将图上的点之间的距离计算出来,BFS即可解决,然后在kruskal。累累累~ AC代码: #include原创 2015-07-15 19:50:59 · 438 阅读 · 0 评论 -
POJ 1789
最小生成树,题意比较难理解。 建模:#include #include #include using namespace std; #define maxx 2005 int n; int esum,p[maxx]; struct Edge { int u,v,w; }edge[maxx*maxx/2]; bool cmp(Edge a,Edge b) { return a.w<b原创 2015-07-15 10:11:49 · 298 阅读 · 0 评论 -
HDU 1233
#include #include #include using namespace std; int p[105]; int n,m; struct Edge { int u; int v; int w; }edge[5005]; bool cmp(Edge x,Edge y) { return x.w<y.w; } int find(int x) { retur原创 2015-07-12 07:59:40 · 356 阅读 · 0 评论 -
HDU 1875
裸题呀~ 无奈因为忘记排序wa了好几次~ 代码比较丑,见谅~ #include #include #include #include using namespace std; int n,t,m,k; int p[105]; struct Edge { int u; int v; double w; }edge[5010]; struct Island {原创 2015-07-12 07:52:10 · 350 阅读 · 0 评论 -
最小生成树之Kruskal算法
struct Edge { int u; int v; int w; }edge[n]; bool cmp(Edge a,Edge b) //间接排序函数 { return a.w<b.w; } int find(int x) { return p[x]==x?x:p[x]=find(p[x]); } int kruskal() { for(int i=0;i<m;i+原创 2015-07-10 22:14:16 · 418 阅读 · 0 评论 -
HDU 1233
#include #include #include using namespace std; int p[105]; int n,m; struct Edge { int u; int v; int w; }edge[5005]; bool cmp(Edge x,Edge y) { return x.w<y.w; } int find(int x) { retur原创 2015-07-15 20:28:02 · 367 阅读 · 0 评论