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的更多相关文章

  1. Connect() 2016 大会的主题 ---微软大法好

    文章首发于微信公众号"dotnet跨平台",欢迎关注,可以扫页面左面的二维码. 今年 Connect 大会的主题是 Big possibilities. Bold technolo ...

  2. IdentityServer4 使用OpenID Connect添加用户身份验证

    使用IdentityServer4 实现OpenID Connect服务端,添加用户身份验证.客户端调用,实现授权. IdentityServer4 目前已更新至1.0 版,在之前的文章中有所介绍.I ...

  3. 2003-Can't connect to mysql server on localhost (10061)

    mysql数据库出现2003-Can't connect to mysql server on localhost (10061)问题 解决办法:查看wampserver服务器是否启动,如果没有启动启 ...

  4. 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- ...

  5. 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 ...

  6. IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API

    IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...

  7. Connect to the DSP on C6A8168/DM8168/DM8148 using CCS

    转自ti-wiki  这份wiki,我曾经就收藏过,但是没有加以重视,以至于绕了一大圈的ccs开发环境的配置,现在正式收藏于自己的博客中...总结良多啊 Connecting to DSP on C6 ...

  8. Action.c(58): Error -27796: Failed to connect to server "hostname"

    分析: 因为负载生成器的性能太好发数据特别快,服务器响应也特别快,从而导致负载生成器的端口在没有timeout之前就全部占满了. 解决方案一:   在负载生成器的注册表HKEY_LOCAL_MACHI ...

  9. VNC connect:Connection refused(10061)

    在Windows机器上使用VNC Viewer访问Linux服务器,有时候会遇到"connect:Connection refused(10061)"这个错误,导致这个错误出现的原 ...

  10. Oracle Connect by与递归with

    层次查询 select * from emp; select empno, ename, job, mgr, sal, deptno,level lv, sys_connect_by_path(ena ...

随机推荐

  1. careercup-数组和字符串1.1

    1.1 实现一个算法,确定一个字符串的所有字符是否全部不同.假设不允许使用额外的数据结构,又该如何处理? C++实现: #include<iostream> #include<str ...

  2. mvvm框架下页面与ViewModel的各种参数传递方式

    传单个参数的话在xaml用     Command={Binding ViewModel的事件处理名称}    CommandParameter={Binding 要传递的控件名称} ViewMode ...

  3. linux中的网络通信指令 分类: 学习笔记 linux ubuntu 2015-07-06 16:02 134人阅读 评论(0) 收藏

    1.write write命令通信是一对一的通信,即两个人之间的通信,如上图. 效果图 用法:write <用户名> 2.wall wall指令可将信息发送给每位同意接收公众信息的终端机用 ...

  4. NoteExpress格式化复制指定输出样式

    在NoteExpress中没有看到为命令“选中的题录右击 => 复制题录 => 格式化复制”指定输出样式的明确配置项,但格式化复制的输出样式也是可以变化了,随细节大面板里的“预览”标签页里 ...

  5. float浮动之后高度自适应失效解决方案

    float浮动之后高度自适应失效解决方案 >>>>>>>>>>>>>>>>>>>> ...

  6. wsdl自动生成Java代码,根据wsdl生成Java代码

    wsdl自动生成Java代码,根据wsdl生成Java代码 >>>>>>>>>>>>>>>>>&g ...

  7. Java对数组对象进行排序

    下面是一组对数组对象进行排序的代码: package com.sun; import java.util.ArrayList; import java.util.Arrays; import java ...

  8. Object传入String类型和其他

    是可以传入的. package com.sun.test; public class Test03 { /** * @param args */ public static void main(Str ...

  9. List和ArrayList,LinkList的区别

    接口 List<E> 是一个接口: ArrayList<E> 是一个类:是一个实现了List接口的类,因此可以List里面定义的所有的方法都实现了. 1.ArrayList是实 ...

  10. Udacity(优达学城)300块红包优惠券

    纳米学位:来自硅谷的名企官方课程 7天免费试用结束后,在"我的教室->设置->纳米学位->续费"页面上的优惠码区域,输入AF55BA53,立即减300元: