POJ 1751 Highways (kruskal)
题目链接:http://poj.org/problem?id=1751
题意是给你n个点的坐标,然后给你m对点是已经相连的,问你还需要连接哪几对点,使这个图为最小生成树。
这里用kruskal不会超时,用prim应该会超时,特别注意在输入的时候不要多组输入,否则会TLE。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int MAXN = ;
struct edge {
int u , v , cost;
}a[MAXN * MAXN];
int x[MAXN] , y[MAXN] , cont , par[MAXN] , cnt , f , ans[MAXN * ];
bool vis[MAXN][MAXN]; void init(int n) {
for(int i = ; i <= n ; i++) {
par[i] = i;
}
memset(vis , false , sizeof(vis));
cont = ;
cnt = n;
} int Find(int n) {
if(n == par[n])
return n;
return (par[n] = Find(par[n]));
} bool cmp(edge a , edge b) {
return a.cost < b.cost;
} int kruskal() {
for(int i = ; i <= cont ; i++) {
if(cnt == )
break;
int u = Find(a[i].u) , v = Find(a[i].v);
if(u != v) {
ans[f++] = a[i].u;
ans[f++] = a[i].v;
par[u] = v;
cnt--;
}
}
} int main()
{
int n , m , u , v;
scanf("%d" , &n);
{
init(n);
for(int i = ; i <= n ; i++) {
scanf("%d %d" , x + i , y + i);
}
scanf("%d" , &m);
while(m--) {
scanf("%d %d" , &u , &v);
u = Find(u) , v = Find(v);
vis[u][v] = vis[v][u] = true;
if(u != v) {
par[u] = v;
cnt--;
}
}
for(int i = ; i <= n ; i++) {
for(int j = ; j < i ; j++) {
if(vis[i][j])
continue;
cont++;
a[cont].u = j , a[cont].v = i;
a[cont].cost = (x[i] - x[j])*(x[i] - x[j]) + (y[i] - y[j])*(y[i] - y[j]);
}
}
sort(a + , a + cont + , cmp);
f = ;
kruskal();
for(int i = ; i < f ; i += ) {
printf("%d %d\n" , ans[i] , ans[i + ]);
}
}
}
POJ 1751 Highways (kruskal)的更多相关文章
- POJ 1751 Highways (最小生成树)
Highways Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- POJ 1751 Highways 【最小生成树 Kruskal】
Highways Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 23070 Accepted: 6760 Speci ...
- POJ 1751 Highways (最小生成树)
Highways 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/G Description The island nation ...
- POJ 1751 Highways (ZOJ 2048 ) MST
http://poj.org/problem?id=1751 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2048 题目大 ...
- (poj) 1751 Highways
Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has a very poor ...
- POJ 1751 Highways(最小生成树&Prim)题解
思路: 一开始用Kruskal超时了,因为这是一个稠密图,边的数量最惨可能N^2,改用Prim. Prim是这样的,先选一个点(这里选1)作为集合A的起始元素,然后其他点为集合B的元素,我们要做的就是 ...
- POJ 1751 Highways(最小生成树Prim普里姆,输出边)
题目链接:点击打开链接 Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has ...
- (最小生成树 Prim) Highways --POJ --1751
链接: http://poj.org/problem?id=1751 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 1150 ...
- POJ 2485 Highways 最小生成树 (Kruskal)
Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public h ...
随机推荐
- .frm文件
http://www.cnblogs.com/jiangxu67/p/4755097.html MySQL]frm文件解析 MySQL 协议字节序 关于传输整数小大端的实现 http://hamilt ...
- c#(.net) 导出 word表格
做了差不多一周的导出Word,现在把代码贴出来 : ExportWord.cs using System; using System.Collections.Generic; using Syst ...
- Google发布SSLv3漏洞简要分析报告
今天上午,Google发布了一份关于SSLv3漏洞的简要分析报告.根据Google的说法,该漏洞贯穿于所有的SSLv3版本中,利用该漏洞,黑客可以通过中间人攻击等类似的方式(只要劫持到的数据加密两端均 ...
- UrlRewriter.dll伪静态实现二级域名泛解析
大家应该知道,微软的URLRewrite能够对URL进行重写,但是也只能对域名之后的部分进行重写,而不能对域名进行重写, 如:可将 http://http://www.115sou.com/qq/ ...
- 图表框架HelloCharts(2)柱状图
1.效果图 2.xml代码 activity_column_chart.xml <FrameLayout xmlns:android="http://schemas.android.c ...
- WEB前端开发成长指南
小 编注:相比起网页射击狮,操纵代码的前端攻城狮凭着双手在键盘巴拉巴拉敲出的字符,就能赋予二次元的静态页面生命,各种lovely 的~~fabulous的~~elegant的交互效果,那叫一个锦上添花 ...
- RubyWin32Api Win32OLE
#ruby提供了多种运行外部程序的方法 #1.%x %x不需要使用引号包含. #2. system方法 #3.exec类似system但是会中断当前的代码执行 #system和exec不能捕获执行程序 ...
- jsoup使用选择器语法来查找元素
问题 你想使用类似于CSS或jQuery的语法来查找和操作元素. 方法 可以使用Element.select(String selector) 和 Elements.select(String sel ...
- Delphi 使用串口模拟工具进行串口程序开发调试
版权声明:本文为博主原创文章,如需转载请注明出处及作者. 本文由小李专栏原创,转载需注明出处:[http://blog.csdn.net/softwave/article/details/8907 ...
- Delphi RichEx 图像
unit RichEx; {2005-03-04 LiChengbinAdded:Insert bitmap or gif into RichEdit controls from source fil ...