http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3367

题目大意:

让你求最小生成树,并且按照字典序输出哪些点连接。无解输出-1

这里的字典序定义为:(不翻译啦~,详见我的比较函数)

A solution A is a line of p integers: a1, a2, ...ap.

Another solution B different from A is a line of q integers: b1, b2, ...bq.

A is lexicographically smaller than B if and only if:

(1) there exists a positive integer r (r <= p, r <= q) such that ai = bi for all 0 < i < r and ar < br 

OR

(2) p < q and ai = bi for all 0 < i <= p

思路:

进行kruskal之前排一次序,保证算法选择的边字典序小。

然后输出的时候也要排一次序。

什么时候无解?MST需要N-1条边才能连接所有顶点,所以你就看看边的条数呗。.。。

详见代码。

#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=120;
const int INF=100000+10;
int fa[MAXN];
int n; struct data
{
int x,y;
int dis;
}a[MAXN*MAXN],ans[MAXN];
bool operator< (const data& c,const data &d)
{
if(c.dis<d.dis)
return true;
else if(c.dis==d.dis)
return c.x<d.x || c.x==d.x && c.y < d.y ;
return false;
} int find(int cur)
{
return cur==fa[cur]? cur:fa[cur]=find(fa[cur]);
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
int len=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&a[len].dis);
if(a[len].dis==0)
continue;
a[len].x=i;
a[len].y=j;
len++;
} sort(a,a+len); //保证kruskal的选边是按字典序来的 for(int i=1;i<=n;i++)
fa[i]=i; int lena=0;
for(int i=0;i<len;i++)
{
int rootx=find(a[i].x);
int rooty=find(a[i].y);
if(rootx!=rooty)
{
fa[rootx]=rooty;
ans[lena].x=a[i].x;
ans[lena].dis=0; //因为懒得在写比较函数,所以直接设为一样的吧
ans[lena++].y=a[i].y;
}
} if(n-1!=lena) //MST性质,肯定要n-1条边才能连接所有点
{
printf("-1\n");
continue;
} sort(ans,ans+lena); //保证输出边也是按字典序来的
for(int i=0;i<lena;i++)
{
if(i!=0)
printf(" ");
printf("%d %d",ans[i].x,ans[i].y);
}
printf("\n");
} return 0;
}

ZOJ 3204 Connect them 继续MST的更多相关文章

  1. ZOJ - 3204 Connect them 最小生成树

    Connect them ZOJ - 3204 You have n computers numbered from 1 to n and you want to connect them to ma ...

  2. ZOJ 3204 Connect them(字典序输出)

    主要就是将最小生成树的边按字典序输出. 读取数据时,把较小的端点赋给u,较大的端点号赋值给v. 这里要用两次排序,写两个比较器: 第一次是将所有边从小到大排序,边权相同时按u从小到大,u相同时按v从小 ...

  3. ZOJ 3204 Connect them(最小生成树+最小字典序)

    Connect them Time Limit: 1 Second      Memory Limit: 32768 KB You have n computers numbered from 1 t ...

  4. ZOJ 3204 Connect them MST-Kruscal

    这道题目麻烦在输出的时候需要按照字典序输出,不过写了 Compare 函数还是比较简单的 因为是裸的 Kruscal ,所以就直接上代码了- Source Code : //#pragma comme ...

  5. zoj 3204 Connect them

    最小生成树,我用的是并查集+贪心的写法. #include<stdio.h> #include<string.h> #include<math.h> #includ ...

  6. zoj 3204 Connect them(最小生成树)

    题意:裸最小生成树,主要是要按照字典序. 思路:模板 prim: #include<iostream> #include<stdio.h> #include<string ...

  7. Connect the Cities(MST prim)

    Connect the Cities Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...

  8. hdu3371 Connect the Cities (MST)

    Connect the Cities Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  9. zoj 3204 最小生成树,输出字典序最小的解

    注意排序即可 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring ...

随机推荐

  1. wmic linux python

    sudo aptitude install wmi-client Example of usage is; wmic -U DOMAIN/administrator%password //10.99. ...

  2. struct数组初始化

    const int MAXN=100; struct A { int a,b; }; struct A arr[100];//此时编译通过 struct A arr[MAXN];//此时编译不通过,原 ...

  3. SSH密码错误几次后封禁登录IP

    #!/bin/bash yum -y install vixie-cron crontabs mkdir -p /usr/local/cron/ cat > /usr/local/cron/ss ...

  4. ORA-10458: standby database requires recovery

    搭建DG最后一步打开时报错如下:   SQL> alter database open read only; alter database open read only * ERROR at l ...

  5. oracle 日期

    http://blog.itpub.net/126211/viewspace-712986/

  6. 地图上显示div点位

    功能核心:  地理坐标转屏幕坐标 用到的插件:jquery  animo动画插件 核心代码: var point = new Point(lon, lat, map.spatialReference) ...

  7. python3输出range序列

    b=range(3)         #输出的是[0, 1, 2] ,其实这里如果用在循环上,代表着循环多少次,这里是循环3次.从零开始.print(list(b))

  8. javasciprt cookies 操作

    <script type="text/javascript"> function getCookie(c_name){ if (document.cookie.leng ...

  9. 关于VUE的安装和一些简单属性

    安装vue 安装前初始化package.json 主要用来描述自己的项目,记录安装过得文件有哪些,在当前文件夹下生产json 安装vue --save(-S)代表项目依赖 --save-dev(-D) ...

  10. LA 3989 - Ladies' Choice 稳定婚姻问题

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...