记录编号 16084 评测结果 AAAAAAAAAA
题目名称 城市规划 最终得分 100
用户昵称 Gravatar苏轼 是否通过 通过
代码语言 C++ 运行时间 0.083 s
提交时间 2010-04-19 15:41:58 内存使用 0.30 MiB
显示代码纯文本
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;

const int MAXN=101,MAXINT=0x7ffff;

int w[MAXN][MAXN],n,ans=0;
bool is[MAXN][MAXN];

int main()
{
	freopen("cityroad.in","r",stdin);
	freopen("cityroad.out","w",stdout);
	scanf("%d",&n);
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
		{
			scanf("%d",&w[i][j]);
			if (w[i][j]>0)is[i][j]=true;
			else w[i][j]=MAXINT,is[i][j]=false;
		}
	for(int k=0;k<n;k++)
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
			if (i!=j)
				if (i!=k&&k!=j)
				if (w[i][k]+w[k][j]<=w[i][j])
					w[i][j]=w[i][k]+w[k][j],
					is[i][j]=is[j][i]=false;
	for(int i=0;i<n;i++)
		for(int j=i+1;j<n;j++)
			if (is[i][j])
				ans+=w[i][j];
	printf("%d\n",ans);
	for(int i=0;i<n;i++)
	{
		printf("%d",is[i][0]);
		for(int j=1;j<n;j++)
			printf(" %d",is[i][j]);
		printf("\n");
	}
	return 0;
}