题:相连的城市

来源:百度知道 编辑:UC知道 时间:2024/09/25 16:39:47
city
相连的城市

问题描述
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

时间限制
各测试点1秒

内存限制
你的程序将被分配32MB的运行空间

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

主要是算法,思路解析什么的。
最好有程序,本人才疏学浅,只懂PASCAL。(需要叻话我这儿还有测试数据)
麻烦了!

读入时第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;