用prim能过,用ku...超时


ku...

#include<iostream>
using namespace std;struct town{int x;int y;
}town[800];struct dist{int from;int to;int dis;int vis;
}dist[320000];int cmp(const void *a, const void *b)
{return (*(struct dist *)a).dis > (*(struct dist *)b).dis ? 1 : -1;
}int fa[800];
int find(int x)
{if(x == fa[x])return x;fa[x] = find(fa[x]);return fa[x];
}int main()
{int N, M, i;cin>>N;for(i=0;i<N;i++){cin>>town[i].x>>town[i].y;}cin>>M;for(i=0;i<M;i++){cin>>dist[i].from>>dist[i].to;dist[i].dis = 0;dist[i].vis = 0;}int j, k;i = M;for(j=0;j<N;j++){for(k=j+1;k<N;k++){dist[i].vis = 1;dist[i].from = j+1;dist[i].to = k + 1;dist[i].dis = (town[j].x-town[k].x)*(town[j].x-town[k].x) + (town[j].y-town[k].y)*(town[j].y-town[k].y);i++;}}int num = M+N*(N-1)/2;qsort(dist, num, sizeof(dist[0]), cmp);for(i=1;i<=N;i++)fa[i]=i;int count = 0;for(i=0;i<num;i++){if(find(dist[i].from) != find(dist[i].to)){fa[find(dist[i].from)] = find(dist[i].to);count++;if(dist[i].vis)cout<<dist[i].from<<" "<<dist[i].to<<endl;if(count == N-1)break; }}system("pause");return 0;
}

prim

#include<iostream>
#include<climits>
#include<cstring>
using namespace std;struct node{int x, y;
}node[755];int maxEdge=INT_MAX;
int flag[755];
int pre[755];
int dist[755];int map[755][755];
int main()
{int N, M;cin>>N;for(int i=1;i<=N;i++){cin>>node[i].x>>node[i].y;}memset(map, 0, sizeof(map));for(int i=1;i<=N;i++){for(int j=1;j<=N;j++){map[i][j]=(node[i].x-node[j].x)*(node[i].x-node[j].x)+(node[i].y-node[j].y)*(node[i].y-node[j].y);}}for(int i=0;i<=N;i++){flag[i]=0;dist[i]=maxEdge;pre[i]=1;}cin>>M;for(int i=1;i<=M;i++){int a, b;cin>>a>>b;pre[b] = a;map[a][b]=0;map[b][a]=0;   }flag[1]=1;dist[1]=maxEdge;  for(int j=2;j<=N;j++){dist[j]=map[1][j];}int next,p=1; for(int i=1;i<N;i++){  int min=maxEdge; for(int j=1;j<=N;j++){if(dist[j]<min){min=dist[j];next = j;}                  }p=pre[next];flag[next]=1;dist[next]=maxEdge;pre[next]=p;if(map[pre[next]][next]  != 0){cout<<pre[next]<<" "<<next<<endl;}for(int j=1;j<=N;j++){if((map[next][j] < dist[j])&& flag[j]==0){dist[j]=map[next][j];pre[j]=next;}}           }system("pause");return 0;
}


转载于:https://www.cnblogs.com/java0721/archive/2012/04/19/2602915.html

poj 1751 highways相关推荐

  1. POJ 1751 Highways (kruskal)

    题目链接:http://poj.org/problem?id=1751 题意是给你n个点的坐标,然后给你m对点是已经相连的,问你还需要连接哪几对点,使这个图为最小生成树. 这里用kruskal不会超时 ...

  2. poj 1751 Highways 最小生成树Kruskal(、Prim还没写

    OJ交不了,,, #pragma warning(disable:4996) #include<iostream> #include<string> #include<c ...

  3. 【POJ - 1751】Highways (最小生成树)

    题干: The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has a very poor system ...

  4. POJ 2485 - Highways(求最小生成树的最大权值-Kruskal算法)

    题目 Language:Default Highways Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 36414 Accept ...

  5. POJ 2485 Highways(最小生成树 Prim)

    Highways   大意:给你一个用邻接矩阵形式存储的有n个顶点的无向图,让你求它的最小生成树并求出在这个生成树里面最大的边的权值. 思路:用Prim求,判断条件改一下就行. PS:dis数组初始化 ...

  6. poj 2485 Highways

    答案就是最小生成树中权值最大的边 #include<cstdio> #include<cstring> #include<cmath> #include<al ...

  7. POJ 2485 Highways (prim最小生成树)

    对于终于生成的最小生成树中最长边所连接的两点来说 不存在更短的边使得该两点以不论什么方式联通 对于本题来说 最小生成树中的最长边的边长就是使整个图联通的最长边的边长 由此可知仅仅要对给出城市所抽象出的 ...

  8. 【kuangbin带你飞】专题六 最小生成树

    [kuangbin带你飞]专题六 最小生成树 A.POJ - 1251 Jungle Roads (最小生成树模板) The Head Elder of the tropical island of ...

  9. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

  10. 算法学习经典例题整理

    陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...

最新文章

  1. Go语言底层原理剖析
  2. SD VC - 变式价格
  3. hdu1166 敌兵布阵
  4. 深究AngularJS——ui-router详解
  5. python序列化模块struct_python的struct模块
  6. 如何科学的打开 Leetcode
  7. Linux字符设备与块设备的区别与比较
  8. RHCE 学习笔记(24) - LVM 逻辑卷
  9. Vue项目开发中的点滴积累系列文章
  10. IDEA使用git提交代码时,点了commit之后卡死在performing code analysis部分,或者performing code analysis结束后没有进入下一步操作。
  11. CC2500 使用总结
  12. 服务器搭建bbr加速
  13. 罗技鼠标可以用c语言吗,罗技无线鼠标连接实用程序软件 v1.00.23 官方最新版
  14. android killer使用方法,AndroidKiller安装、设置及使用教程
  15. 学做一点吃食烤面包虾粥
  16. Github官网无法访问问题
  17. 第二届“长安杯”电子数据竞赛试题wp
  18. sip测试工具--Sipp的编译
  19. 计算压力倍增,携程度假起价引擎架构演变
  20. 滴滴出行与上海交通大学共建联合实验室,加速产学研合作进程

热门文章

  1. idea提交本地项目到git
  2. 森林病虫防治系统 (十二)
  3. windows 下pcl的安装和编译
  4. Asp.net 5种页面转向方法 转载
  5. [Android] 环境配置之正式版Android Studio 1.0
  6. android A工程引用B工程
  7. 为什么JDK6中的substring()方法会导致内存泄露?
  8. [2018.03.13 T3]联盟(alliances)
  9. ps 显示当前进程的状态
  10. kill、killall 、pkill 发送信号命令