最小生成树
文章平均质量分 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 · 370 阅读 · 0 评论 -
POJ 1258
#include #include #include using namespace std;#define maxx 105int 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 · 301 阅读 · 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 · 301 阅读 · 0 评论 -
POJ 1751
#include#includeusing 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 · 388 阅读 · 0 评论 -
POJ 2349
#include #include #include #include using namespace std;#define maxx 505int 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 · 321 阅读 · 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 · 489 阅读 · 0 评论 -
POJ 2031
#include #include #include #include #include using namespace std;#define esp 10E-9int 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 · 294 阅读 · 0 评论 -
POJ 1251
Jungle RoadsTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 20765 Accepted: 9560DescriptionThe Head Elder of the tropical island of Lagrishan ha原创 2015-07-15 20:02:24 · 334 阅读 · 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 · 289 阅读 · 0 评论 -
POJ 1679
求最小生成树是否唯一,即求次小生成树,判断它的边权和是否和最小生成树的一样。还是用的kruskal算法,先求得最小生成树,再记录下路径,然后枚举删除最小生成树中的一条边,再构造新的生成树,看是否和最小权值相同。AC代码:#include #include #include using namespace std;#define maxx 105int n,p[maxx],m;原创 2015-07-15 15:23:28 · 257 阅读 · 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 · 309 阅读 · 0 评论 -
POJ 3026 (BFS+最小生成树)
题意好难理解~~大意:在一幅图里,‘S’代表起点,‘A’代表外星人,‘#’代表墙,‘ ’代表通路。你带着一群人从S出发,去找到所有的A,每到一个A处,你的队伍可以分为很多支,继续从该点开始遍历,要求找到所有的外星人,并且路径长度最短。最小生成树问题,A和S可以视为相同的。首先需要将图上的点之间的距离计算出来,BFS即可解决,然后在kruskal。累累累~AC代码:#include原创 2015-07-15 19:50:59 · 432 阅读 · 0 评论 -
POJ 1789
最小生成树,题意比较难理解。建模:#include #include #include using namespace std;#define maxx 2005int 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 · 291 阅读 · 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 · 352 阅读 · 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 · 345 阅读 · 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 · 405 阅读 · 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 · 362 阅读 · 0 评论