相连的城市

n个城市中,某些城市间有道路互相连接。给出与每个城市相邻的城市有多少个,请输出城市间的邻接矩阵。

输入格式:

第一行输入一个正整数n,表示城市的个数。
第二行输入n个用空格隔开的非负整数,其中第i个数表示与城市i相邻的城市有多少个。

输出格式:

输出满足输入数据的邻接矩阵。也就是说,你的输出应该一个关于对角线对称的N x N的01矩阵。输出的数需要用空格隔开。
如果没有满足条件的邻接矩阵,请输出“No Solution”。
如果有多种可能的邻接矩阵,你可以任意输出一个。

样例输入:

7
4 3 1 5 4 2 1

样例输出:

(不唯一)
0 1 0 1 1 0 1
1 0 0 1 1 0 0
0 0 0 1 0 0 0
1 1 1 0 1 1 0
1 1 0 1 0 1 0
0 0 0 1 1 0 0
1 0 0 0 0 0 0

数据范围:

对于30%的数据,n<=3;
对于50%的数据,n<=30;
对于70%的数据,n<=300;
对于100%的数据,n<=3000;

 
读入时第2行读a[1]..a[n]
for k:=1 to n do
begin
找度最大 也就是相邻城市最多的点i,度为max;
if max=0 then break;
{选出第2大,第3大...第a[i]+1大的度不为零的点与他连接 这a[i]个点设为x1,x2,x3...xa[i] 让这a[i]个点都-1即dec(a[x1]);dec(a[x2])……}
a[i]:=0; {把a[i]变为0;}
end;
在处理过程中,为了避免每次操作都快速排序(N2*logN太大)我采用归并排序,开一个A数组,A中与city都是按照con(connection连接)从大到小排列的,然后把处理过的A与city归并。
 #include<cstdio>
 #include<iostream>
 #include<algorithm>
 using namespace std;
 ;
 bool map[N][N];
 struct node{
     int num,con;
 }city[N],A[N];
 inline bool cmp(node a,node b){return a.con>b.con;}
 int main()
 {
     int n;
     scanf("%d",&n);
     ;i<=n;i++)
     {
         city[i].num=i;
         scanf("%d",&city[i].con);
     }
     sort(city+,city+n+,cmp);
     int w,pa,pc,pn;
     ;i<=n;i++)
     {
         ].con==) break;
         w=city[].con;
         ;j<=+w;j++)
         {
             map[city[].num][city[j].num]=map[city[j].num][city[].num]=;
             A[j-]=city[j];
             A[j-].con--;
         }
         A[w+]=city[];
         A[w+].con=;
         pa=;pc=w+;pn=;
         &&pc<=n)
         {
             if(A[pa].con>city[pc].con) city[pn++]=A[pa++];
             else city[pn++]=city[pc++];
         }
         ) city[pn++]=A[pa++];
         while(pc<=n) city[pn++]=city[pc++];
     }
     ;i<=n;i++)
     {
         ;j<=n;j++) printf("%d ",map[i][j]);
         printf("\n");
     }
     ;
 }
 

XJOI1689相连的城市的更多相关文章

  1. 蚁群算法简介(part2: 蚁群算法之构造路径)

    蚁群算法主要可以分为以下几个步骤:首先,蚁群中的每只蚂蚁都根据地面上信息素浓度的大小找出一条从原点通向终点的遍历所有城市一次的路径(构造路径):然后每只蚂蚁沿着自己刚刚找到的路径回溯,在路径经过的各个 ...

  2. hdoj 2066 一个人的旅行

    Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰 ...

  3. uva10160 Servicing Stations

    The input consists of more than one description of town (but totally, less than ten descriptions). E ...

  4. HDU1224 DP

    Free DIY Tour Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  5. 一个人的旅行-Floyd

    一个人的旅行 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submis ...

  6. hd2066一个人的旅行

    Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰 ...

  7. CSU 1116 Kingdoms

    题意:给你n个城市,m条被摧毁的道路,每条道路修复需要c元,总共有k元,给你每个城市的人口,问在总费用不超过k的情况下 与1号城市相连的城市的最大总人口(包括1号城市) 思路:1号城市是必取的,剩余最 ...

  8. 旅行(Dijkstra)问题

    问题:输入: 输入数据有多组,每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个,草儿想去的地方有D个:   接着有T行,每行有三个整数a,b,time,表示a,b城市之间的车 ...

  9. HDOJ 2066 floyed优化算法

    一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

随机推荐

  1. SharePoint 2016 配置用户请求应用程序

    最近看了看SharePoint的应用程序,觉得还是不错的,以前都没怎么注意过这样的功能.当然,应用程序除了让用户和管理员添加外,还可以让他们进行请求,把应用程序添加到应用程序目录,然后由统一的管理员进 ...

  2. jQuery_第五章_事件和动画

    Jquery中的事件与动画 一.window.onload和$(document).read()的细微差别 (1)执行时机 window.onload:所有元素(包括元素的所有关联文件)完全加载到浏览 ...

  3. Vue2.0源码阅读笔记--双向绑定实现原理

    上一篇 文章 了解了Vue.js的生命周期.这篇分析Observe Data过程,了解Vue.js的双向数据绑定实现原理. 一.实现双向绑定的做法 前端MVVM最令人激动的就是双向绑定机制了,实现双向 ...

  4. HNOI2015 Day 1

    HNOI2015的题还是非常漂亮的,几道题都有很大的借鉴意义,都有很强的思考性 T1亚瑟王(概率论) 描述:http://www.lydsy.com/JudgeOnline/problem.php?i ...

  5. Spring 数据源

    1.使用org.springframework.jdbc.datasource.DriverManagerDataSource说明:DriverManagerDataSource建立连接是只要有连接就 ...

  6. 【转】Hibernate和IBatis对比

    原文地址:http://blog.csdn.net/ya2dan/article/details/7396598 项目也做过几个, 使用IBatis就做一个项目, 基本上都是使用Hibernate, ...

  7. Nginx支持Socket转发过程详解

    序言 一网友在群中问,nginx支持socket转发吗? 实话说,我没做过socket转发,但是我知道socket跟http一样都是通过tcp或者udp通信的,我猜测啦一下nginx应该支持吧,然后又 ...

  8. 【2017-2-17】C#基础 - 定义变量,输入输出

    1.初学C#. C#是专门为.NET的应用而开发的语言,他吸收了C++.Visual Basic.Delphi.Java等语言的优点,提高了程序开发的效率. 2.Visual Studio.NET的集 ...

  9. HA高可用集群

     准备2台机器:主:master:192.168.254.140从:slave:192.168.254.141 1.主上安装:wget www.lishiming.net/data/attachmen ...

  10. 本人开发的JavaWeb急速框架Blast上线了

    JAVA 急速WEB框架Blast --对JavaWeb的学习性框架,参考了spring的实现 --阅读Blast源码可以快速掌握JavaWeb常用技术和方法论,并付诸实践 Blast 是基于 Jav ...