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 ...
随机推荐
- Java基础知识强化之网络编程笔记05:UDP之多线程实现聊天室案例
1. 通过多线程改进刚才的聊天程序,这样我就可以实现在一个窗口发送和接收数据了 2. 代码示例: (1)SendThread.java,如下: package com.himi.udpDemo2; ...
- HDU 5637 Transform
题意: 有两种变换: 1. 改变此数二进制的某一位(1变成0 或者 0变成1) 2. 让它与给出的n个数当中的任意一个做异或运算 给你两个数s, t,求从s到t最少要经过几步变换,一共m组查询思路: ...
- Linux安装Jdk,CentOS安装Jdk
Linux安装Jdk,CentOS安装Jdk >>>>>>>>>>>>>>>>>>>& ...
- Ubuntu安装gevent
今天在安装包的过程中,按照网上的文章,出错,找了很久,最后才安装成功,希望能解决以后大家遇到的问题 Ubuntu安装gevent Gevent是一个基于greenlet的Python的并发框架,以赖于 ...
- 规划收发你的邮件,使用qq邮箱接收阿里云企业邮邮件
使用qq邮箱接收阿里企业邮 首先管理员开通企业邮后会发来激活短信 根据短信提示打开https://qiye.aliyun.com企业邮登陆地址 使用短信提供的密码登陆邮箱 首次登陆时会让我们重设密码 ...
- file的name值
在picturelibrary中取一张jpg文件, 其Name值为 "NoThumbnail.jpg",注意后面的.jpg foreach (SPFile ...
- Android - This Handler class should be static or leaks might occur.
今天学习了使用 HTTP协议,从Android客户端往Tomcat服务器端以GET发送请求,途中无意中发现自己写的Handler类被Android提示:This Handler class shoul ...
- asp.net命名规范
以下命名规范是在编程中,可以辅助快速编程的良好方式之一,我一点点的整理出来,以便形成自己的编程规范.还有待完善... 0.产品命名规范: 结构 层次 产品 模块 功能 命名规则 UI(界面层) Web ...
- iOS 十六进制的相加取反
ios中将NSstring字符串转换成char类型 NSString *string = [NSString stringWithFormat:@"5D"]; const char ...
- AngularJS track by $index引起的思考
今天写了一段程序,只是一个简答的table数据绑定,但是绑定select的数据之后,发现ng-change事件失去了效果,不知道什么原因. 主要用到的代码如下: <div id="ri ...