比赛 防止浮躁的小练习V0.1 评测结果 AAAAAAAAAA
题目名称 通信线路 最终得分 100
用户昵称 Ostmbh 运行时间 1.181 s
代码语言 C++ 内存使用 8.93 MiB
提交时间 2016-10-07 17:55:38
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
int Max=100000000;
int dis[1502][1502];
int Min[1502];
int vis[1502]={0};
int main(){
	freopen("mcst.in","r",stdin);
	freopen("mcst.out","w",stdout);
	int ans=0;
	int n,x;
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>x;
			if(x==-1)
				dis[i][j]=Max;
			else 
				dis[i][j]=x;
		}
	Min[i]=Max;
	}
	Min[1]=0;
	for(int i=1;i<=n;i++){
		int u=-1,min1=Max;
		for(int j=1;j<=n;j++)
			if(Min[j]<min1&&vis[j]==0){
				u=j;
				min1=Min[j];
			}
		if(u==-1)
			break;
		vis[u]=1;
		ans+=Min[u];
		for(int j=1;j<=n;j++){
			if(j!=u&&vis[j]==0)
				if(dis[u][j]<Min[j])
					Min[j]=dis[u][j];
		}
	}
	cout<<ans<<endl;
return 0;
}