Connect them
zoj3204:
最小生成树,要求最小字典序的解。
用kruscal算法,先排序,输出的时候也要排序。
/*
zoj3204 解题思路:
赤裸裸的最小生成树。只是要求输出字典序最小的连接方案。
所以在边的排序时要注意了,有可能存在边的权值是相同的边。
所以在这种情况下,要按他们的顶点序列排序。直接把STL搬上了,很好很强大。 */
#include<iostream>
#include<cstdio>
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include <cstdio>
#include <cstring>
#include<cmath>
#include<algorithm>
using namespace std;//这句写的时候千万别丢,不然许多函数无法使用
const int MAX=;
struct Node{
int from, to;
int w; }edge[MAX*MAX];//记录读取时边的端点和权值 Node ans[MAX*MAX];//记录构成最小生成树里面的边 (边端点)
int n;//点的个数
int fa[MAX];// 并查集的
int tol;//记录最小生成树边的个数
int cnt;//记录ans里的边的个数
void addedge(int u ,int v,int w){
edge[tol].from=u;
edge[tol].to=v;
edge[tol].w=w;
tol++; }//添加边额操作
void makeset(){
for(int i=;i<=n;i++){
fa[i]=i; } }//并查集的初始化 ,也可以直接初始化为-1
int Find(int x){
while(x!=fa[x])
x=fa[x];
return x;
}//并查集的查找操作
void uion(int x,int y){
int a=Find(x);
int b=Find(y);
if(a!=b){
ans[cnt].from=x;
ans[cnt].to=y;
cnt++;
fa[a]=b;
} }//并查集的合并操作
int cmp1(Node a,Node b){
if(a.w!=b.w)return a.w<b.w;
else {if(a.from==b.from) return a.to<b.to;
else
return a.from<b.from;
}
}//比较器首先按w从小到大排序,若w相等,则依次按照from,to进行排序 ,这是给边排序
int cmp2(Node a,Node b){ if(a.from!=b.from)return a.from<b.from;
else
return a.to<b.to;
}//这个比较器主要是给ans里面的边排序,使其按照要求输出
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
tol=;
cnt=;//一定要在该处初始化tol,cnt否则会报超时的错误
makeset();
int d;
for(int i=;i<=n;i++){ for(int j=;j<=n;j++){
scanf("%d",&d);
if(j<=i)continue;
if(d==)continue;//这样读取会使避免重边的影响
addedge(i,j,d);//前面的d会被后面的覆盖 }
}
sort(edge,edge+tol,cmp1);//排序
for(int i=;i<tol;i++)
uion(edge[i].from,edge[i].to); sort(ans,ans+cnt,cmp2);
if(cnt!=n-){
printf("-1\n");
continue;}//这一步很重要,是判断能不能形成最小生成树的
else{ for(int i=;i<cnt-;i++){
printf("%d %d ",ans[i].from,ans[i].to);//注意题目给出的输出格式
}
printf("%d %d\n",ans[cnt-].from,ans[cnt-].to); }
} }
Connect them的更多相关文章
- Connect() 2016 大会的主题 ---微软大法好
文章首发于微信公众号"dotnet跨平台",欢迎关注,可以扫页面左面的二维码. 今年 Connect 大会的主题是 Big possibilities. Bold technolo ...
- IdentityServer4 使用OpenID Connect添加用户身份验证
使用IdentityServer4 实现OpenID Connect服务端,添加用户身份验证.客户端调用,实现授权. IdentityServer4 目前已更新至1.0 版,在之前的文章中有所介绍.I ...
- 2003-Can't connect to mysql server on localhost (10061)
mysql数据库出现2003-Can't connect to mysql server on localhost (10061)问题 解决办法:查看wampserver服务器是否启动,如果没有启动启 ...
- Error connecting to database [Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)]
参照 http://stackoverflow.com/questions/4448467/cant-connect-to-local-mysql-server-through-socket-var- ...
- HTTP Method详细解读(`GET` `HEAD` `POST` `OPTIONS` `PUT` `DELETE` `TRACE` `CONNECT`)
前言 HTTP Method的历史: HTTP 0.9 这个版本只有GET方法 HTTP 1.0 这个版本有GET HEAD POST这三个方法 HTTP 1.1 这个版本是当前版本,包含GET HE ...
- IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API
IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...
- Connect to the DSP on C6A8168/DM8168/DM8148 using CCS
转自ti-wiki 这份wiki,我曾经就收藏过,但是没有加以重视,以至于绕了一大圈的ccs开发环境的配置,现在正式收藏于自己的博客中...总结良多啊 Connecting to DSP on C6 ...
- Action.c(58): Error -27796: Failed to connect to server "hostname"
分析: 因为负载生成器的性能太好发数据特别快,服务器响应也特别快,从而导致负载生成器的端口在没有timeout之前就全部占满了. 解决方案一: 在负载生成器的注册表HKEY_LOCAL_MACHI ...
- VNC connect:Connection refused(10061)
在Windows机器上使用VNC Viewer访问Linux服务器,有时候会遇到"connect:Connection refused(10061)"这个错误,导致这个错误出现的原 ...
- Oracle Connect by与递归with
层次查询 select * from emp; select empno, ename, job, mgr, sal, deptno,level lv, sys_connect_by_path(ena ...
随机推荐
- 数据结构与算法/leetcode/lintcode题解
http://algorithm.yuanbin.me/zh-hans/index.html
- linux 0.11 源码学习+ IO模型
http://www.cnblogs.com/Fredric-2013/category/696688.html
- [置顶] String StringBuffer StringBuilder的区别剖析
这是一道很常见的面试题目,至少我遇到过String/StringBuffer/StringBuilder的区别:String是不可变的对象(final)类型,每一次对String对象的更改均是生成一个 ...
- Nginx vs Apache--reference
May 14th, 2014 - By Walker Rowe https://anturis.com/blog/nginx-vs-apache/ What is the Nginx web and ...
- iis6配置使用页面Gzip压缩提速
iis7默认就启用了Gzip压缩,节约带宽,流量,能够很明显的提升访问速度,但是iis6则没有,本文就是介绍如何通过配置开启iis6的Gzip压缩 一. HTTP压缩概述 HTTP压缩是在Web服务器 ...
- 网站优化的经验和技巧--精简高效的C#
对大型网站,技术涉及面非常广,对硬件,软件,编程语言,Web Service,防火墙等等有很高要求. 面对大量用户,高并发请求,可以使用高性能服务器,高性能编程语言,高性能数据库,加大带宽等,这 ...
- 微信上传图文消息素材40007,invalid media_id hint
上传图文消息素材40007,invalid media_id hint,微信40007 >>>>>>>>>>>>>> ...
- SCIP读书笔记(1)
这书也算是必修吧,尤其是我这种非科班人员,还是应该抽时间尽量学习一下.大致翻过一遍,习题非常多,尽力吧. ##构造过程抽象 * 为了表述认知,每种语言都提供了三种机制:基本元素:组合方式:抽象方法. ...
- Html+Css+Js_之table每隔3行显示不同的两种颜色
<html> <head> <script type="text/javascript"> /** 最近因项目的需求,有这样的一个问题: 一个t ...
- css hack方法总结
IE6识别:下划线 _ 和 星号 *IE7识别:星号 *IE6-IE10识别: \9 css hack方式,条件注释法<!--[if IE]>这段文字只在IE浏览器显示<![endi ...