poj 1751 Highways 最小生成树Kruskal(、Prim还没写
OJ交不了,,,
#pragma warning(disable:4996)
#include<iostream>
#include<string>
#include<cmath>
#include<ctype.h>
#include<memory.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<iomanip>
#include<set>
#include<list>
#include<vector>
#include<stack>
#include<queue>
#define ll long long int
using namespace std;
const int INF = 0x3f3f3f3f;
const int maxn = 1100;
struct point
{int x, y;
};struct EDGE
{int u, v;double w;
};
bool cmp(EDGE a, EDGE b)
{return a.w < b.w;
}point a[maxn];
EDGE edge[maxn];
int n, m;
int par[maxn];
int cnt = 0;
point ans[maxn];int find(int x)
{if (par[x] == x)return par[x];return par[x] = find(par[x]);
}void initilize()
{cnt = 1;for (int i = 0; i <= n; i++)par[i] = i;
}double cal_dis(int x1, int y1, int x2, int y2)
{return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}int main()
{cin >> n;initilize();for (int i = 1; i <= n; i++)cin >> a[i].x >> a[i].y;//for (int i = 1; i <= n; i++)// cout << "x,y: " << a[i].x << " " << a[i].y << endl;for (int i = 1; i < n; i++)for (int j = i + 1; j <= n; j++){edge[cnt].u = i;edge[cnt].v = j;edge[cnt].w = cal_dis(a[i].x, a[i].y, a[j].x, a[j].y);cnt++;}//cout << "edge[i]:";//for (int i = 1; i <= cnt; i++)// cout << edge[i].u << " " << edge[i].v << " " << edge[i].w << endl;cin >> m;for (int i = 0; i < m; i++){int u, v;cin >> u >> v;int fa = find(u);int fb = find(v);par[fb] = fa;}/*for (int i = 0; i < n; i++){for (int j = i; j < n; j++){if (find(i) != find(j)){edge[cnt].u = i;edge[cnt].v = j;edge[cnt].w = cal_dis(a[i].x, a[i].y, a[j].x, a[j].y);cnt++;}}}*/sort(edge, edge + cnt, cmp);/*cout << "edge[i]:";for (int i = 1; i <= cnt; i++)cout << edge[i].u << " " << edge[i].v << " " << edge[i].w << endl;*//*cout << "par[i] = ";for (int i = 0; i <= n; i++)cout << par[i] << " ";cout << endl;*/int cnt2 = 0;for (int i = 1; i <= cnt; i++){int fa = find(edge[i].u);int fb = find(edge[i].v);//cout << ":";if (fa != fb){//cout << fa << " " << fb << endl;par[fb] = fa;ans[cnt2].x = edge[i].u;ans[cnt2].y = edge[i].v;cnt2++;if (cnt2 == n - 1)break;//cout << edge[i].u << " " << edge[i].v << endl;}}for (int i = 0; i < cnt2; i++)cout << ans[i].x << " " << ans[i].y << endl;/*for(int i=0;i<n;i++)for (int j = 0; j < n; j++){edge[cnt].u = i;edge[cnt].v = j;edge[cnt].w = cal_dis(a[i].x, a[i].y, a[j].x, a[j].y);cnt++;}*/return 0;
}
poj 1751 Highways 最小生成树Kruskal(、Prim还没写相关推荐
- poj 1287 Networking 最小生成树 Kruskal Prim
关于Kruskal和Prim在前面已经有详细的解释以及模板了 有关于需要注意的地方,以及在代码中注释出来. //Kruskal //用结构体保存起始点以及耗费,然后排序后,根据Kruskal #inc ...
- 徐磊(Devops):一名写了十几年代码但还没写够的程序员
徐磊(Devops 社区领袖) [个人介绍] 徐磊,微软MVP(微软最有价值专家,大中华区域社区技术总监,Devops 社区领袖),从事过网管.技术支持.网络.软件开发等工作,一名写了十几年代码但还没 ...
- poj 3026 BorgMaze 最小生成树Kruskal、Prim(Prim VS报错待解决
题意 以及 思路: 从S点有一伙人出发去消灭A点的敌人,在S点或者A点可以分裂成几个小队然后分别走,这样路径=总队路径+各个小队路径 问你怎样路径最短. 在一个y行 x列的迷宫中,有可行走的通路空格' ...
- * poj 1251 JungleRoad 最小生成树 Kruskal算法、Prim算法
文章目录 Kruskal算法 模板:https://blog.csdn.net/Rain722/article/details/65642992 Prim算法 模板: poj 1251 JungleR ...
- poj 2439 ArcticNetwork 最小生成树Kruskal、(Prim方法还没做
题意思路: https://www.cnblogs.com/yueshuqiao/archive/2011/08/24/2152471.html Kruskal: 参考大佬的代码: 法一 法二 #pr ...
- POJ 1751 Highways (kruskal)
题目链接:http://poj.org/problem?id=1751 题意是给你n个点的坐标,然后给你m对点是已经相连的,问你还需要连接哪几对点,使这个图为最小生成树. 这里用kruskal不会超时 ...
- poj 1679 TheUniqueMST 最小生成树Kruskal(、Prim待做
题意: 给定连接的无向图,告诉它的最小生成树是否唯一. 定义1(生成树):考虑连通的无向图G =(V,E).G的生成树是G的子图,比如T =(V',E'),具有以下属性: 1.V'= V. 2.T是连 ...
- poj 1789 TruckHistory 最小生成树 Kruskal、Prim
题意: n个车牌号,刚开始只有一个车牌,其他车牌都是由一个车牌直接或间接产生,一个车牌到另一个车牌的产生权值是它们之间的数字不同的个数,问产生的最小的边权和,即求最小生成树. Input: 多组数据. ...
- SOJ2198 Highways 最小生成树 kruskal算法
第一次写博客 最小生成树入门题 附上链接 http://cstest.scu.edu.cn/soj/problem.action?id=2198 这是一道kruskal的模板题(刘汝佳的小白书--&l ...
最新文章
- 服务器监控软件ZABBIX
- Android_安卓为按钮控件绑定事件的五种方式
- csredis-in-asp.net core理论实战-主从配置、哨兵模式
- 矢量合成和分解的法则_力的合成与分解专题解析,寒假复习!
- 笔记本电脑电源已接通未充电_dell xps15 电源已接通 未充电 维修方法
- 【2019牛客暑期多校训练营(第二场) - H】Second Large Rectangle(单调栈,全1子矩阵变形)
- python 图片拼接成固定行列
- Win10错误代码0x80070541是怎么回事
- BZOJ 3289 Mato的文件管理(莫队+树状数组)
- 67. 查询分页数据(2)
- [原创]如何有效的考核测试人员
- MySQL5.7 InnoDB官方文档中文版[猿教程]
- EPLAN电气设计实例入门教程pdf
- BugKu CTF(杂项篇MISC)—啊哒
- Arduino 用4位共阴数码管造一个计数器
- 云计算技术的概念、原理
- 获取当前时间一年后的日期
- 通达信l2数据接口与MACD指标结合
- 2022年全国大学生数学建模竞赛E题目-小批量物料生产安排详解+思路+Python代码时序预测模型(三)
- 南加州大学计算机科学案例,南加州大学计算机科学硕士录取
热门文章
- 【HNOI2017】礼物
- spring boot 相关注解
- centos7.3部署django用uwsgi和nginx[亲测可用]
- beeline连接hive
- Oracle PLSQL 客户端 连接Oracle12.2 出现权限问题的解决办法以及绿色版Oracle客户端的使用....
- 关于数据库记录排序问题
- 设计模式12-命令模式
- CCF202112-2 序列查询新解
- Tensorflow_gpu安装的坑
- python 把多个list合并为一个并去重内容_110道Python面试题(上)